[英]radio button html missing checked attribute, though firebug indicates it is checked
提前謝謝您的時間。
問題陳述摘要 :瀏覽器上的單選按鈕html不顯示checked屬性,但Firebug指示無線電的checked屬性設置為checked
經過測試
Broswer:FF 3.6.18和IE8 jQuery:1.5 MVC3(Razor)
細節
使用MVC3(使用Razor)我正在從服務器渲染以下單選按鈕。 所需的功能是在檢查一個無線電時,另一個應該是未選中的,反之亦然。 換句話說,允許用戶只選擇一個選項 - 比如val1或val2。
<div id="myRadioList">
<div>
<input type="radio" value="val1" onclick="updateFunctionCalledHere(this)" name="myRadioName" id="myRadioName_val1" checked="checked">
</div>
<div>
<input type="radio" value="val2" onclick="updateFunctionCalledHere(this)" name="myRadioName" id="myRadioName_val2">
</div>
</div>
我所觀察到的是,如果用戶切換所選的無線電,則顯示使用firebug檢查新選擇的無線電(例如myRadioName_val2
),但html仍然反映其他單選按鈕已選中。 因此,其他一些驗證失敗了。
我已經嘗試刪除兩個單選按鈕的所有已檢查屬性,然后檢查單擊的那個。
這就是我正在做的設置當前點擊的無線電,這是無效的
$("#myRadioList > div > input[value='myRadioName_val2]').attr('checked', 'checked');
我正在簡化我的代碼以避免發布不必要的細節。
謝謝!
HTML中的checked
屬性是默認值。 JavaScript中的checked
屬性指的是單選按鈕的當前狀態。
通常,最好讓瀏覽器處理單選按鈕和復選框的checked
狀態,而不是自己設置,否則會遇到這些問題。 通過prop("checked")
獲得當前狀態是安全的,如已經建議的那樣,或通過.is(":checked")
。
你可能還想考慮使用像$('#myRadioList').find('input[value="myRadioName_val2"]')
或者更好的$('#myRadioName_val2')
,因為jQuery中的子選擇器可以是因為它們是從右到左閱讀的。
你應該用
$("#myRadioList > div > input[value=myRadioName_val2]").prop('checked', true);
好吧,你有一個關於jQuery選擇器的語法錯誤。 它應該是:
$('#myRadioList > div > input[value="myRadioName_val2"]')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.