簡體   English   中英

單選按鈕html缺少已檢查屬性,但firebug表示已選中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM