如何在選取一個複選框後取消選取其他複選框?
P粉436688931
2023-09-02 19:15:42
<p>我正在使用 Symfony 框架,并且有一個由 EasyAdmin 插件自動生成的表單。我需要此表單僅顯示無線電輸入字段,但無論出于何種原因,EasyAdmin 都會創(chuàng)建復(fù)選框,而我還沒有找到更改它的方法。</p>
<p>我遇到的問題是,當(dāng)用戶選中其中一個復(fù)選框時,必須取消選中所有其他復(fù)選框。換句話說,模擬無線電輸入。</p>
<p>以下是創(chuàng)建復(fù)選框的 HTML:</p>
<ul>
<li>請注意,此復(fù)選框已選中。要取消選中復(fù)選框,請將屬性<strong>btn-success</strong>更改為<strong>btn-danger</strong>,并添加另一個名為“<strong>off</strong>”的屬性,第一個 div 的類聲明。</li>
</ul>
<pre class="brush:php;toolbar:false;"><!-- Change btn-success to btn-danger, and add an additional class named "off" to the following div in order to uncheck checkboxes -->
<div class="toggle btn btn-xs btn-success" data-toggle="toggle" style="width: 38px; height: 23px;">
<input type="checkbox" data-toggle="toggle" data-size="mini" data-onstyle="success" data-offstyle="danger" data-on="Yes" data-off="No">
<div class="toggle-group">
<label class="btn btn-success btn-xs toggle-on">Yes</label>
<label class="btn btn-danger btn-xs active toggle-off">No</label>
<span class="toggle-handle btn btn-default btn-xs"></span>
</div>
</div></pre>
<p>我的代碼目前看起來像這樣</p>
<pre class="brush:php;toolbar:false;">$('#main').find('table .toggle input[type="checkbox"]').change(function() {
$('#main').find('div .toggle .btn .btn-xs .btn-success').not($(this)).removeClass("on").removeClass("btn-success").addClass("btn-danger").addClass("off");</pre>
<p>控制臺中沒有錯誤消息;任何幫助是極大的贊賞;過去兩天這讓我發(fā)瘋:(
});</p>
<p>下面是當(dāng)前不起作用的表單和 JavaScript:</p>
<p>
<pre class="snippet-code-js lang-js prettyprint-override"><code>$('#main').find('table .toggle input[type="checkbox"]').change(function() {
$('#main').find('div .toggle .btn .btn-xs .btn-success').not($(this)).removeClass("on").removeClass("btn-success").addClass("btn-danger").addClass("off");
});</code></pre>
<pre class="snippet-code-html lang-html prettyprint-override"><code><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<section id="main" class="content">
<div class="table-responsive">
<table class="table table-striped">
<thead>
<tr>
<th data-property-name="id" class="sorted integer ">
<a href="/admin/?action=list&amp;entity=SchoolYear&amp;sortField=id&amp;sortDirection=ASC&amp;page=1&amp;referer=%252Fadmin%252F%253Faction%253Dlist%2526entity%253DSchoolYear%2526sortField%253Did%2526sortDirection%253DDESC%2526page%253D1">
<i class="fa fa-caret-down"></i> ID
</a>
</th>
<th data-property-name="name" class=" string ">
<a href="/admin/?action=list&amp;entity=SchoolYear&amp;sortField=name&amp;sortDirection=DESC&amp;page=1&amp;referer=%252Fadmin%252F%253Faction%253Dlist%2526entity%253DSchoolYear%2526sortField%253Did%2526sortDirection%253DDESC%2526page%253D1">
<i class="fa fa-sort"></i> Name
</a>
</th>
<th data-property-name="start_date" class=" date ">
<a href="/admin/?action=list&amp;entity=SchoolYear&amp;sortField=start_date&amp;sortDirection=DESC&amp;page=1&amp;referer=%252Fadmin%252F%253Faction%253Dlist%2526entity%253DSchoolYear%2526sortField%253Did%2526sortDirection%253DDESC%2526page%253D1">
<i class="fa fa-sort"></i> Start date
</a>
</th>
<th data-property-name="end_date" class=" date ">
<a href="/admin/?action=list&amp;entity=SchoolYear&amp;sortField=end_date&amp;sortDirection=DESC&amp;page=1&amp;referer=%252Fadmin%252F%253Faction%253Dlist%2526entity%253DSchoolYear%2526sortField%253Did%2526sortDirection%253DDESC%2526page%253D1">
<i class="fa fa-sort"></i> End date
</a>
</th>
<th data-property-name="current" class=" toggle ">
<a href="/admin/?action=list&amp;entity=SchoolYear&amp;sortField=current&amp;sortDirection=DESC&amp;page=1&amp;referer=%252Fadmin%252F%253Faction%253Dlist%2526entity%253DSchoolYear%2526sortField%253Did%2526sortDirection%253DDESC%2526page%253D1">
<i class="fa fa-sort"></i> Current
</a>
</th>
<th>
<span>Actions</span>
</th>
</tr>
</thead>
<tbody>
<tr data-id="4">
<td data-label="ID" class="sorted integer ">
4
</td>
<td data-label="Name" class=" string ">
<span title="SY 2022-2023">SY 2022-2023</span>
</td>
<td data-label="Start date" class=" date ">
<time datetime="2022-07-01T00:00:00-04:00" title="Fri, 01 Jul 2022 00:00:00 -0400">2022-07-01</time>
</td>
<td data-label="End date" class=" date ">
<time datetime="2023-06-30T00:00:00-04:00" title="Fri, 30 Jun 2023 00:00:00 -0400">2023-06-30</time>
</td>
<td data-label="Current" class=" toggle ">
<div class="toggle btn btn-success btn-xs" data-toggle="toggle" style="width: 38px; height: 23px;"><input type="checkbox" checked="" data-toggle="toggle" data-size="mini" data-onstyle="success" data-offstyle="danger" data-on="Yes" data-off="No">
<div class="toggle-group"><label class="btn btn-success btn-xs toggle-on">Yes</label><label class="btn btn-danger btn-xs active toggle-off">No</label><span class="toggle-handle btn btn-default btn-xs"></span></div>
</div>
</td>
<td data-label="Actions" class="actions">
<a href="http://localhost:8000/view-program/4">View</a>
<a class="text-primary action-edit" title="" href="/admin/?action=edit&amp;entity=SchoolYear&amp;sortField=id&amp;sortDirection=DESC&amp;page=1&amp;referer=%252Fadmin%252F%253Faction%253Dlist%2526entity%253DSchoolYear%2526sortField%253Did%2526sortDirection%253DDESC%2526page%253D1&amp;id=4"
target="_self">Edit</a>
<a class="text-danger action-delete" title="" href="/admin/?action=delete&amp;entity=SchoolYear&amp;sortField=id&amp;sortDirection=DESC&amp;page=1&amp;referer=%252Fadmin%252F%253Faction%253Dlist%2526entity%253DSchoolYear%2526sortField%253Did%2526sortDirection%253DDESC%2526page%253D1&amp;id=4"
target="_self">Delete</a>
</td>
</tr>
<tr data-id="3">
<td data-label="ID" class="sorted integer ">
3
</td>
<td data-label="Name" class=" string ">
<span title="SY 2021-2022">SY 2021-2022</span>
</td>
<td data-label="Start date" class=" date ">
<time datetime="2021-07-01T00:00:00-04:00" title="Thu, 01 Jul 2021 00:00:00 -0400">2021-07-01</time>
</td>
<td data-label="End date" class=" date ">
<time datetime="2022-06-30T00:00:00-04:00" title="Thu, 30 Jun 2022 00:00:00 -0400">2022-06-30</time>
</td>
<td data-label="Current" class=" toggle ">
<div class="toggle btn btn-danger off btn-xs" data-toggle="toggle" style="width: 38px; height: 23px;"><input type="checkbox" data-toggle="toggle" data-size="mini" data-onstyle="success" data-offstyle="danger" data-on="Yes" data-off="No">
<div class="toggle-group"><label class="btn btn-success btn-xs toggle-on">Yes</label><label class="btn btn-danger btn-xs active toggle-off">No</label><span class="toggle-handle btn btn-default btn-xs"></span></div>
</div>
</td>
<td data-label="Actions" class="actions">
<a href="http://localhost:8000/view-program/3">View</a>
<a class="text-primary action-edit" title="" href="/admin/?action=edit&amp;entity=SchoolYear&amp;sortField=id&amp;sortDirection=DESC&amp;page=1&amp;referer=%252Fadmin%252F%253Faction%253Dlist%2526entity%253DSchoolYear%2526sortField%253Did%2526sortDirection%253DDESC%2526page%253D1&amp;id=3"
target="_self">Edit</a>
<a class="text-danger action-delete" title="" href="/admin/?action=delete&amp;entity=SchoolYear&amp;sortField=id&amp;sortDirection=DESC&amp;page=1&amp;referer=%252Fadmin%252F%253Faction%253Dlist%2526entity%253DSchoolYear%2526sortField%253Did%2526sortDirection%253DDESC%2526page%253D1&amp;id=3"
target="_self">Delete</a>
</td>
</tr>
<tr data-id="2">
<td data-label="ID" class="sorted integer ">
2
</td>
<td data-label="Name" class=" string ">
<span title="SY 2019-2020">SY 2019-2020</span>
</td>
<td data-label="Start date" class=" date ">
<time datetime="2019-07-01T00:00:00-04:00" title="Mon, 01 Jul 2019 00:00:00 -0400">2019-07-01</time>
</td>
<td data-label="End date" class=" date ">
<time datetime="2020-06-30T00:00:00-04:00" title="Tue, 30 Jun 2020 00:00:00 -0400">2020-06-30</time>
</td>
<td data-label="Current" class=" toggle ">
<div class="toggle btn btn-danger off btn-xs" data-toggle="toggle" style="width: 38px; height: 23px;"><input type="checkbox" data-toggle="toggle" data-size="mini" data-onstyle="success" data-offstyle="danger" data-on="Yes" data-off="No">
<div class="toggle-group"><label class="btn btn-success btn-xs toggle-on">Yes</label><label class="btn btn-danger btn-xs active toggle-off">No</label><span class="toggle-handle btn btn-default btn-xs"></span></div>
</div>
</td>
<td data-label="Actions" class="actions">
<a href="http://localhost:8000/view-program/2">View</a>
<a class="text-primary action-edit" title="" href="/admin/?action=edit&amp;entity=SchoolYear&amp;sortField=id&amp;sortDirection=DESC&amp;page=1&amp;referer=%252Fadmin%252F%253Faction%253Dlist%2526entity%253DSchoolYear%2526sortField%253Did%2526sortDirection%253DDESC%2526page%253D1&amp;id=2"
target="_self">Edit</a>
<a class="text-danger action-delete" title="" href="/admin/?action=delete&amp;entity=SchoolYear&amp;sortField=id&amp;sortDirection=DESC&amp;page=1&amp;referer=%252Fadmin%252F%253Faction%253Dlist%2526entity%253DSchoolYear%2526sortField%253Did%2526sortDirection%253DDESC%2526page%253D1&amp;id=2"
target="_self">Delete</a>
</td>
</tr>
<tr data-id="1">
<td data-label="ID" class="sorted integer ">
1
</td>
<td data-label="Name" class=" string ">
<span title="SY 2020-2021">SY 2020-2021</span>
</td>
<td data-label="Start date" class=" date ">
<time datetime="2020-07-01T00:00:00-04:00" title="Wed, 01 Jul 2020 00:00:00 -0400">2020-07-01</time>
</td>
<td data-label="End date" class=" date ">
<time datetime="2021-06-30T00:00:00-04:00" title="Wed, 30 Jun 2021 00:00:00 -0400">2021-06-30</time>
</td>
<td data-label="Current" class=" toggle ">
<div class="toggle btn btn-xs btn-danger off" data-toggle="toggle" style="width: 38px; height: 23px;"><input type="checkbox" data-toggle="toggle" data-size="mini" data-onstyle="success" data-offstyle="danger" data-on="Yes" data-off="No" checked="checked">
<div class="toggle-group"><label class="btn btn-success btn-xs toggle-on">Yes</label><label class="btn btn-danger btn-xs active toggle-off">No</label><span class="toggle-handle btn btn-default btn-xs"></span></div>
</div>
</td>
<td data-label="Actions" class="actions">
<a href="http://localhost:8000/view-program/1">View</a>
<a class="text-primary action-edit" title="" href="/admin/?action=edit&amp;entity=SchoolYear&amp;sortField=id&amp;sortDirection=DESC&amp;page=1&amp;referer=%252Fadmin%252F%253Faction%253Dlist%2526entity%253DSchoolYear%2526sortField%253Did%2526sortDirection%253DDESC%2526page%253D1&amp;id=1"
target="_self">Edit</a>
<a class="text-danger action-delete" title="" href="/admin/?action=delete&amp;entity=SchoolYear&amp;sortField=id&amp;sortDirection=DESC&amp;page=1&amp;referer=%252Fadmin%252F%253Faction%253Dlist%2526entity%253DSchoolYear%2526sortField%253Did%2526sortDirection%253DDESC%2526page%253D1&amp;id=1"
target="_self">Delete</a>
</td>
</tr>
</tbody>
</table>
</div>
</section></code></pre>
</p>
您可以掛鉤表格,然後使用它來尋找複選框。我使用第一個檢查的來設(shè)定初始狀態(tài),但如果沒有,您可能需要調(diào)整它。
可能需要更詳細(xì)一點,只是為了讓解決方案更加清晰。
每一則評論都使其始終處於開啟狀態(tài)。如果您希望以程式設(shè)計方式開啟/關(guān)閉它們,您可以將 'change'
事件變更為 click
let $mainTable = $('#main').find('table tbody');
$mainTable.on('change', 'input[type="checkbox"]', function(event) {
let $me = $(this);
$me.prop("checked", true);
let $parent = $(event.delegateTarget);
let checks = $parent.find('input[type="checkbox"]');
checks.not($me).prop("checked", false);
checks.not($me).toggleClass('btn-danger off', true);
$me.toggleClass("btn-success on", true).toggleClass('btn-danger off', false);
// show the classes when checked/unchecked
//console.log([...this.classList]);
});
// set up the first one as checked to mimic requirement; could be any one
$mainTable.find('input[type="checkbox"]')
.first(':checked)')
.trigger('change');
// now what classes it has we can log those
//console.log([...$mainTable.find('input[type="checkbox"]').first(':checked)')[0].classList]);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<section id="main" class="content">
<div class="table-responsive">
<table class="table table-striped">
<thead>
<tr>
<th data-property-name="id" class="sorted integer ">
<a href="/admin/?action=list&entity=SchoolYear&sortField=id&sortDirection=ASC&page=1&referer=%252Fadmin%252F%253Faction%253Dlist%2526entity%253DSchoolYear%2526sortField%253Did%2526sortDirection%253DDESC%2526page%253D1">
<i class="fa fa-caret-down"></i> ID
</a>
</th>
<th data-property-name="name" class=" string ">
<a href="/admin/?action=list&entity=SchoolYear&sortField=name&sortDirection=DESC&page=1&referer=%252Fadmin%252F%253Faction%253Dlist%2526entity%253DSchoolYear%2526sortField%253Did%2526sortDirection%253DDESC%2526page%253D1">
<i class="fa fa-sort"></i> Name
</a>
</th>
<th data-property-name="start_date" class=" date ">
<a href="/admin/?action=list&entity=SchoolYear&sortField=start_date&sortDirection=DESC&page=1&referer=%252Fadmin%252F%253Faction%253Dlist%2526entity%253DSchoolYear%2526sortField%253Did%2526sortDirection%253DDESC%2526page%253D1">
<i class="fa fa-sort"></i> Start date
</a>
</th>
<th data-property-name="end_date" class=" date ">
<a href="/admin/?action=list&entity=SchoolYear&sortField=end_date&sortDirection=DESC&page=1&referer=%252Fadmin%252F%253Faction%253Dlist%2526entity%253DSchoolYear%2526sortField%253Did%2526sortDirection%253DDESC%2526page%253D1">
<i class="fa fa-sort"></i> End date
</a>
</th>
<th data-property-name="current" class=" toggle ">
<a href="/admin/?action=list&entity=SchoolYear&sortField=current&sortDirection=DESC&page=1&referer=%252Fadmin%252F%253Faction%253Dlist%2526entity%253DSchoolYear%2526sortField%253Did%2526sortDirection%253DDESC%2526page%253D1">
<i class="fa fa-sort"></i> Current
</a>
</th>
<th>
<span>Actions</span>
</th>
</tr>
</thead>
<tbody>
<tr data-id="4">
<td data-label="ID" class="sorted integer ">
4
</td>
<td data-label="Name" class=" string ">
<span title="SY 2022-2023">SY 2022-2023</span>
</td>
<td data-label="Start date" class=" date ">
<time datetime="2022-07-01T00:00:00-04:00" title="Fri, 01 Jul 2022 00:00:00 -0400">2022-07-01</time>
</td>
<td data-label="End date" class=" date ">
<time datetime="2023-06-30T00:00:00-04:00" title="Fri, 30 Jun 2023 00:00:00 -0400">2023-06-30</time>
</td>
<td data-label="Current" class=" toggle ">
<div class="toggle btn btn-success btn-xs" data-toggle="toggle" style="width: 38px; height: 23px;"><input type="checkbox" checked="" data-toggle="toggle" data-size="mini" data-onstyle="success" data-offstyle="danger" data-on="Yes" data-off="No">
<div class="toggle-group"><label class="btn btn-success btn-xs toggle-on">Yes</label><label class="btn btn-danger btn-xs active toggle-off">No</label><span class="toggle-handle btn btn-default btn-xs"></span></div>
</div>
</td>
<td data-label="Actions" class="actions">
<a href="http://localhost:8000/view-program/4">View</a>
<a class="text-primary action-edit" title="" href="/admin/?action=edit&entity=SchoolYear&sortField=id&sortDirection=DESC&page=1&referer=%252Fadmin%252F%253Faction%253Dlist%2526entity%253DSchoolYear%2526sortField%253Did%2526sortDirection%253DDESC%2526page%253D1&id=4"
target="_self">Edit</a>
<a class="text-danger action-delete" title="" href="/admin/?action=delete&entity=SchoolYear&sortField=id&sortDirection=DESC&page=1&referer=%252Fadmin%252F%253Faction%253Dlist%2526entity%253DSchoolYear%2526sortField%253Did%2526sortDirection%253DDESC%2526page%253D1&id=4"
target="_self">Delete</a>
</td>
</tr>
<tr data-id="3">
<td data-label="ID" class="sorted integer ">
3
</td>
<td data-label="Name" class=" string ">
<span title="SY 2021-2022">SY 2021-2022</span>
</td>
<td data-label="Start date" class=" date ">
<time datetime="2021-07-01T00:00:00-04:00" title="Thu, 01 Jul 2021 00:00:00 -0400">2021-07-01</time>
</td>
<td data-label="End date" class=" date ">
<time datetime="2022-06-30T00:00:00-04:00" title="Thu, 30 Jun 2022 00:00:00 -0400">2022-06-30</time>
</td>
<td data-label="Current" class=" toggle ">
<div class="toggle btn btn-danger off btn-xs" data-toggle="toggle" style="width: 38px; height: 23px;"><input type="checkbox" data-toggle="toggle" data-size="mini" data-onstyle="success" data-offstyle="danger" data-on="Yes" data-off="No">
<div class="toggle-group"><label class="btn btn-success btn-xs toggle-on">Yes</label><label class="btn btn-danger btn-xs active toggle-off">No</label><span class="toggle-handle btn btn-default btn-xs"></span></div>
</div>
</td>
<td data-label="Actions" class="actions">
<a href="http://localhost:8000/view-program/3">View</a>
<a class="text-primary action-edit" title="" href="/admin/?action=edit&entity=SchoolYear&sortField=id&sortDirection=DESC&page=1&referer=%252Fadmin%252F%253Faction%253Dlist%2526entity%253DSchoolYear%2526sortField%253Did%2526sortDirection%253DDESC%2526page%253D1&id=3"
target="_self">Edit</a>
<a class="text-danger action-delete" title="" href="/admin/?action=delete&entity=SchoolYear&sortField=id&sortDirection=DESC&page=1&referer=%252Fadmin%252F%253Faction%253Dlist%2526entity%253DSchoolYear%2526sortField%253Did%2526sortDirection%253DDESC%2526page%253D1&id=3"
target="_self">Delete</a>
</td>
</tr>
<tr data-id="2">
<td data-label="ID" class="sorted integer ">
2
</td>
<td data-label="Name" class=" string ">
<span title="SY 2019-2020">SY 2019-2020</span>
</td>
<td data-label="Start date" class=" date ">
<time datetime="2019-07-01T00:00:00-04:00" title="Mon, 01 Jul 2019 00:00:00 -0400">2019-07-01</time>
</td>
<td data-label="End date" class=" date ">
<time datetime="2020-06-30T00:00:00-04:00" title="Tue, 30 Jun 2020 00:00:00 -0400">2020-06-30</time>
</td>
<td data-label="Current" class=" toggle ">
<div class="toggle btn btn-danger off btn-xs" data-toggle="toggle" style="width: 38px; height: 23px;"><input type="checkbox" data-toggle="toggle" data-size="mini" data-onstyle="success" data-offstyle="danger" data-on="Yes" data-off="No">
<div class="toggle-group"><label class="btn btn-success btn-xs toggle-on">Yes</label><label class="btn btn-danger btn-xs active toggle-off">No</label><span class="toggle-handle btn btn-default btn-xs"></span></div>
</div>
</td>
<td data-label="Actions" class="actions">
<a href="http://localhost:8000/view-program/2">View</a>
<a class="text-primary action-edit" title="" href="/admin/?action=edit&entity=SchoolYear&sortField=id&sortDirection=DESC&page=1&referer=%252Fadmin%252F%253Faction%253Dlist%2526entity%253DSchoolYear%2526sortField%253Did%2526sortDirection%253DDESC%2526page%253D1&id=2"
target="_self">Edit</a>
<a class="text-danger action-delete" title="" href="/admin/?action=delete&entity=SchoolYear&sortField=id&sortDirection=DESC&page=1&referer=%252Fadmin%252F%253Faction%253Dlist%2526entity%253DSchoolYear%2526sortField%253Did%2526sortDirection%253DDESC%2526page%253D1&id=2"
target="_self">Delete</a>
</td>
</tr>
<tr data-id="1">
<td data-label="ID" class="sorted integer ">
1
</td>
<td data-label="Name" class=" string ">
<span title="SY 2020-2021">SY 2020-2021</span>
</td>
<td data-label="Start date" class=" date ">
<time datetime="2020-07-01T00:00:00-04:00" title="Wed, 01 Jul 2020 00:00:00 -0400">2020-07-01</time>
</td>
<td data-label="End date" class=" date ">
<time datetime="2021-06-30T00:00:00-04:00" title="Wed, 30 Jun 2021 00:00:00 -0400">2021-06-30</time>
</td>
<td data-label="Current" class=" toggle ">
<div class="toggle btn btn-xs btn-danger off" data-toggle="toggle" style="width: 38px; height: 23px;"><input type="checkbox" data-toggle="toggle" data-size="mini" data-onstyle="success" data-offstyle="danger" data-on="Yes" data-off="No" checked="checked">
<div class="toggle-group"><label class="btn btn-success btn-xs toggle-on">Yes</label><label class="btn btn-danger btn-xs active toggle-off">No</label><span class="toggle-handle btn btn-default btn-xs"></span></div>
</div>
</td>
<td data-label="Actions" class="actions">
<a href="http://localhost:8000/view-program/1">View</a>
<a class="text-primary action-edit" title="" href="/admin/?action=edit&entity=SchoolYear&sortField=id&sortDirection=DESC&page=1&referer=%252Fadmin%252F%253Faction%253Dlist%2526entity%253DSchoolYear%2526sortField%253Did%2526sortDirection%253DDESC%2526page%253D1&id=1"
target="_self">Edit</a>
<a class="text-danger action-delete" title="" href="/admin/?action=delete&entity=SchoolYear&sortField=id&sortDirection=DESC&page=1&referer=%252Fadmin%252F%253Faction%253Dlist%2526entity%253DSchoolYear%2526sortField%253Did%2526sortDirection%253DDESC%2526page%253D1&id=1"
target="_self">Delete</a>
</td>
</tr>
</tbody>
</table>
</div>
</section>
點贊 +0
P粉436688931
回覆