2015-11-17 80 views
0

我遇到單選按鈕值問題。我搜索直到並按照相同的問題在stackoverflow指令,但沒有幫助。如果您能提供幫助,我將不勝感激:Javascript:無法獲得無線電價值,它總是返回null

下面代碼中的radio_value總是返回null。

<!DOCTYPE HTML> 
 
<HTML> 
 
\t <HEAD> 
 
\t \t <TITLE>Template</TITLE> 
 
\t \t <script> 
 
\t \t function payment_validation(){ \t 
 
\t \t var radio_value=""; 
 
\t \t var radios=document.getElementsByName("payment"); 
 
\t \t for (var i=0;i<radios.length;i++){ 
 
\t \t if(radios[i].checked){ \t 
 
\t \t radio_value=radios[i].value; 
 
\t \t return radio_value; 
 
\t \t break; 
 
\t \t } 
 
\t \t } 
 
\t \t if(radio_value!=""){ 
 
\t \t document.getElementById("payment_error").innerHTML=""; 
 
\t \t return true; \t 
 
\t \t } 
 
\t \t else{ 
 
     document.getElementById("payment_error").innerHTML="Please select radio"; 
 
\t \t return false; \t 
 
\t \t } 
 
\t \t } \t 
 
\t \t </script> 
 
\t </HEAD> 
 
\t 
 
\t <BODY> \t 
 
\t \t <p> 
 
\t \t Payment Options: 
 
     <input type="radio" name="payment" id="CC" value="">CreditCard 
 
     <input type="radio" name="payment" id="DC" value="">DebitCard 
 
     <input type="radio" name="payment" id="PP" value="">Paypal 
 
     <span style=color:red id= payment_error></span> \t 
 
\t \t </p> 
 
    \t \t 
 
\t \t <p> 
 
\t \t <input type="button" id="submit_id" value=" SUBMIT " onclick="payment_validation()"> 
 
\t \t </p> 
 
\t </BODY> 
 
</HTML>

+0

您定義的值是' 「」'什麼你期望得到什麼? –

回答

1

有幾件事情:

  • 你應該嘗試與標籤縮進格式化你的JS所以它更容易閱讀。
  • 你真的只需要你的payment_validation函數返回true或false;所以刪除行return radio_value,而不是break
  • 最佳實踐是用逗號分隔頂部的變量聲明,而不是多次聲明var
  • 您有未結案的<p>標記。
  • 編號payment_error沒有元素,因此代碼會按原樣生成錯誤。
  • 您的<span>標記格式錯誤;它缺少屬性值周圍的引號,並且在payment_error之前有一個空格。

總之,現在:

HTML:

<p> 
    Payment Options: 
    <input type="radio" name="payment" id="CC" value="CreditCard">CreditCard 
    <input type="radio" name="payment" id="DC" value="DebitCard">DebitCard 
    <input type="radio" name="payment" id="PP" value="Paypal">Paypal 
</p> 

<p> 
    <input type="button" id="submit_id" value=" SUBMIT " onclick="payment_validation()"> 
</p> 

<p style="color: red;" id="payment_error"></p> 

JS:

function payment_validation() { 
    var radio_value = "", 
     radios = document.getElementsByName("payment"); 

    for (var i = 0; i < radios.length; i++) { 
     if (radios[i].checked) { 
      radio_value = radios[i].value; 
      break; 
     } 
    } 

    if (radio_value != "") { 
     document.getElementById("payment_error").innerHTML = ""; 
     return true; 
    } else { 
     document.getElementById("payment_error").innerHTML = "Please select radio"; 
     return false; 
    } 
} 

Codepen:http://codepen.io/anon/pen/avXGeK

+0

感謝您的建議@benjarwar,它現在適合我。會記住你的建議。謝謝 :) – Serena

1

使用.checked代替.value的。這應該有所幫助,並使其不是NULL。所以ITV將

radio_value=radios[i].checked;