2012-02-27 17 views
3

預先感謝您的時間。單選按鈕的HTML缺少選中的屬性,雖然螢火蟲表示它被檢查

摘要問題陳述的:在瀏覽器上的單選按鈕HTML不顯示被選中屬性,但螢火蟲表明電臺的檢查屬性設置爲檢查

測試在

Broswer: FF 3.6.18和IE8 jQuery的:1.5 MVC3(剃刀)

詳細

使用MVC3(與剃刀)我從服務器呈現下列單選按鈕。期望的功能是在檢查一個無線電時,另一個應該不被檢查,反之亦然。換句話說,用戶只能選擇一個選項 - 比如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> 

我正在觀察的是,如果用戶切換選擇的電臺,新選擇的無線電(比方說myRadioName_val2)顯示使用螢火檢查,但HTML還是反映了在其他單選按鈕選中。因此,其他一些驗證失敗。

我試着從字面上刪除這兩個單選按鈕的所有選中的屬性,然後只檢查一個被單擊的屬性。

這是我做的設置當前單擊的單選什麼,不工作

$("#myRadioList > div > input[value='myRadioName_val2]').attr('checked', 'checked'); 

我簡化了我的代碼,以避免不必要的發佈細節。

謝謝!

+1

選擇器有報價不匹配,您不可能看到html更改,請使用prop()方法 – charlietfl 2012-02-27 16:50:25

回答

4

checked屬性在HTML是默認值。 checked財產JavaScript指的是單選按鈕的當前狀態。

通常,最好讓瀏覽器處理單選按鈕和複選框的狀態,而不是自己設置它,否則會遇到這類問題。已經建議通過prop("checked")或通過.is(":checked")獲取當前狀態是安全的。

您可能還想考慮使用類似$('#myRadioList').find('input[value="myRadioName_val2"]')或更好的語法$('#myRadioName_val2'),因爲jQuery中的子選擇器可能相當慢,因爲它們是從右到左讀取的。

+0

謝謝您的好評! – m27 2012-02-27 17:59:03

0

那麼,你有一個與jQuery選擇器的語法錯誤。它應該是:

$('#myRadioList > div > input[value="myRadioName_val2"]') 
4

您應該使用

$("#myRadioList > div > input[value=myRadioName_val2]").prop('checked', true);