2017-10-16 291 views
0

將radio選項設置爲'checked',但值回來'undefined?'

<div id="use-same-address-selection-container" class="input-field"> 
 
    <label for="delivery-same">Use Same Address?</label> 
 
\t \t \t  <div class="picker"> 
 
\t \t \t \t \t \t  <span class="radio-wrap"> 
 
\t \t \t \t \t \t \t \t  <input type="radio" name="delivery-same" id="delivery-same-yes" value="yes" class="same-address-picker"><label for="delivery-same-yes">YES</label> 
 
\t \t \t \t \t \t \t \t \t </span> 
 
\t \t \t \t \t \t \t \t \t <span class="radio-wrap"> 
 
\t \t \t \t \t \t \t \t \t  <input type="radio" name="delivery-same" id="delivery-same-no" value="no" class="same-address-picker"><label for="delivery-same-no">NO</label> 
 
\t \t \t \t \t \t \t \t \t </span> 
 
\t \t \t \t \t \t </div> 
 
</div>

我知道這裏也有類似的問題,但我已經通過噸答案,文章看了看,還沒有發現我的情況的解決方案或解釋呢。

我試圖設置類型=無線輸入的「檢查」屬性以這樣的方式

$("#use-different-address").prop('checked', true); 

然後,立即行下面,我打印出來警報看到的價值'checked'屬性,並且不斷返回'undefined'。

alert("Value of the checked property for use-different-address = " + $("#use-different-address").prop('checked')); 

我一直在移動它所有的文檔各地嘗試在執行流程不同的地方,試圖把它在$(文件)。就緒(),軋成其他自定義功能,使用替代的語法(例如,attr而不是prop),但是沒有任何東西允許我在加載頁面時自動將其設置爲「檢查」。奇怪的是,當我手動點擊其中一個選項時,該框被檢查並從此開始正常運行(我可以改變選擇,函數正常觸發變化等),直到我刷新或返回到在該頁面之後,兩個選項都沒有被選中,並且'checked'的值又是'undefined'。

注意:我沒有試圖簡單地設置'checked'的默認值,所以在HTML中輸入'checked = true'這樣的操作是行不通的。它應該根據是否設置sessionStorage變量來設置(我可以設置併成功讀取此值,所以這不是問題),所以我需要能夠更改'checked'屬性的值後sessionStorage變量被檢測到。

+0

你可以把你的HTML代碼嗎? –

+0

你需要展示更多的代碼,因爲你描述的工作正常https://codepen.io/pjabbott/pen/gGQWMx –

+0

你使用的是什麼jQuery版本?如果它在1.6之前,你需要使用'.attr(「checked」,「checked」)'但是,更多的代碼/上下文會有幫助https://stackoverflow.com/a/19630917/8222554 – stephen

回答

0

$('#use_different_address').prop('checked', true); 
 

 
function is_radio_cheked(_radio){ 
 
\t if ($(_radio).is(':checked')){ 
 
\t  return true; 
 
\t }else{ 
 
\t \t return false; 
 
\t } 
 
} 
 

 
function is_my_radio_value(){ 
 
console.log([ is_radio_cheked($('#use_different_address')), is_radio_cheked($('#not_use_different_address')) ]); 
 
} 
 

 
    console.log(is_radio_cheked($('#use_different_address')));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 

 

 
    <label><input type="radio" name="my_name" id="use_different_address" onClick="is_my_radio_value();">YES</label> 
 
    <label><input type="radio" name="my_name" id="not_use_different_address" onClick="is_my_radio_value();">NO</label>

+0

謝謝你的迴應...我無法得到這個爲我工作,但我終於找到了代碼中的正確位置,讓塊使其工作! – scoffin