2017-06-03 141 views
2

我有一個複選框和兩個單選按鈕。 關於收音機其中一個改變事件,我正在複選框的選中屬性爲真。 它只能使用一次。單選按鈕更改事件後未複選複選框

Demo

步驟複製它, 1,點擊難看(複選框被選中) 2.取消選中的複選框 3.toggel順便說一句難看和良好(無效果:(

用完的一很多時間在這一點,但無法弄清楚是怎麼回事

回答

1

更新您的代碼如下:

  1. 使用prop()方法代替attr()方法來更新checked屬性。
  2. 通常綁定更改事件處理程序並根據所選的單選按鈕值更新屬性。

// or select based on the name attribute 
 
// `$('input[type=radio][name="gender"]')` 
 
$('input[type=radio]').on('change', function() { 
 
    $('.xyz').prop('checked', this.value == 'bad'); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="checkbox" name="vehicle" value="Car" class="xyz"> I have a car<br> 
 

 

 
<input type="radio" name="gender" value="good"> Good Oned<br> 
 
<input type="radio" name="gender" value="bad"> Ugly<br>

+0

感謝@pranav,它工作,但爲什麼我們必須綁定每個單選按鈕的事件,這不是瀏覽器的額外工作? (也只是爲了安心:))爲什麼我的代碼不起作用我的意思是說,當用戶選擇「壞」時,我們是真的嗎? – 92sharmasaurabh

+0

@ 92sharmasaurabh:你沒有取消選中你的代碼中的複選框,......並使其工作,你需要使用'prop()'或'.attr('checked','checked')' –

1

試試這個,如果條件.clicked單選按鈕值是壞的點擊真正被別的false出現在檢查ATTR。你應該使用prop()方法,而不是attr

更新

爲什麼不工作?
你選擇錯了。你有$('input[type=radio][value = "bad"]')。其選擇唯一的價值差的無線電 按鈕不是兩個。所以只有當你點擊其他單選按鈕,複選框 沒有選中

$(document).ready(function() { 
 
    $('input[type=radio]').on('change', function() { 
 
    $('.xyz').prop('checked', $(this).val().trim() == 'bad'); 
 
    }) 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script data-require="jquery" data-semver="3.1.1" src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 

 
<input type="checkbox" name="vehicle" value="Car" class="xyz"> I have a car<br> 
 
<input type="radio" name="gender" value="good"> Good Oned<br> 
 
<input type="radio" name="gender" value="bad"> Ugly<br><br>

+0

謝謝@prasad,它工作,但爲什麼我們必須爲每個單選按鈕綁定事件,這不是瀏覽器的額外工作? (也只是爲了安心:))爲什麼我的代碼不起作用我的意思是說,當用戶選擇「壞」時,我們是真的嗎? – 92sharmasaurabh

+0

是不是一個額外的工作.Beacuse沒有綁定事件。你不能夠找到值是壞的或其他什麼 – prasanth

+0

*爲什麼我的代碼不工作*因爲你的選擇器是錯誤的。你有'$('input [type = radio] [value =「bad」]')'.its只選擇壞的單選按鈕值不是爲了這兩個。所以只有當你點擊其他單選按鈕時複選框沒有被選中 – prasanth