2012-10-20 111 views
1

我如何在複選框上進行驗證?如何顯示單選按鈕?

這裏是我的代碼:

<script> 
function Validate(){ 
    var cntct = document.getElementById("contact").value; 
    if (cntct.value=="") 
    { 
     alert("Please select contact medium"); 
     return false; 
    } 
} 
</script> 

<input type="radio" name="contact" id="contact" value="SMS"> 
<label>SMS</label> <input type="radio" name="contact" id="contact" value="CALL"> 
<label>CALL</label> <input type="radio" name="contact" id="contact" value="EMAIL"> 
<label>EMAIL</label> 

請幫助..

+0

穿上它,'change'? – Bergi

+0

您的多個'id'屬性無效 - 它必須是唯一的。你將需要迭代所有具有相同名稱的輸入並搜索'.checked'。 – Bergi

+0

咦?這個例子顯示單選按鈕。無線電按鈕的特性在於它們中的一個必須始終被選中。雖然瀏覽器不會隨意設置,但一旦完成,您將無法取消選擇。簡單的答案 - 無需驗證單選按鈕!只需設置其中一個來檢查html。在type =「radio」和name =「contact」之間添加單詞'checked'(僅限第一個單選按鈕)。另外,如上所述,您不能像您一樣複製ID。給他們唯一的 - 例如id ='smsRb'id ='callRb'id ='emailRb' – enhzflep

回答

0

在複選框和單選按鈕的情況下,當「選中」屬性爲true的元素被選:

function Validate(){ 
    var selectedValue = ""; 
    var cntct = document.getElementsByname("contact"); 
    for(var i=0;i<cntct.length;i++) { 
     if (cntct[i].checked) 
     { 
      selectedValue = cntct.value; 
     } 
    } 
    if(selectedValue == "") { 
     alert("Please select contact medium"); 
     return false; 
    } 
    return true; 
} 

UPDATE

我只注意到你有相同ID的多個元素。這是不允許的,在這種情況下,瀏覽器將只返回具有該ID的最後一個元素。您需要迭代具有相同name的元素並選取屬性爲checked的元素。看到上面的代碼

+1

檢查的屬性是布爾值,並且doesn並不一定表明該複選框已被實際檢查。如果複選框沒有checked屬性,那麼無論複選框是否被選中,它都會返回null。更好地測試選中的屬性:'if(cntct.checked)'。 – RobG

+0

@RobG感謝您的通知,我已經修復了答案 – haynar

+0

您的代碼出現問題時我再次選擇一個單選按鈕,然後單擊提交按鈕再次打開一個警告框。 2或3次後提交表格,請幫助 –

0

簡單:如果 (CNTCT == 「」){

}

的CNTCT變量價值!

+0

另外...你必須得到收音機名稱的值,而不是ID .. –

0

我如何把複選框驗證?

我假設你的意思是「如何確保在提交表單時檢查其中一個單選按鈕」(假設有一個表單未顯示)。

最簡單的方法是在默認情況下選中一個複選框,然後您知道總是會選中一個複選框,您不必檢查,例如,

<input type="radio" name="contact" value="CALL" checked> 
<input type="radio" name="contact" value="EMAIL"> 

另一種方式是遍歷單選按鈕時提交表單(或你決定的基礎上確認任何事件),並確保一個被選中。例如

function checkButton() { 
    var nodes = document.getElementsByName('contact'); 
    for (var i=0, iLen=nodes.length; i<iLen; i++) { 

    // If find a checked one, job's done 
    if (nodes[i].checked) return true; 
    } 

    // Otherwise, none were checked 
    return false; 
} 

沒有與聯繫人的姓名輸入類型的文本,但它不會有一個檢查屬性,因此會像一個未經檢查的無線電進行治療。

0

請試試這個:

<script> 
function SubmitIt() 
{ 
    if (document.forms.myform.elements.contact.value == "") 
    { 
     alert("Please select contact medium..."); 
    } 
} 
</script> 

<form name="myform" id="myform"> 
    <input type="radio" name="contact" id="contact" value="SMS"> 
    <label>SMS</label> <input type="radio" name="contact" id="contact" value="CALL"> 
    <label>CALL</label> <input type="radio" name="contact" id="contact" value="EMAIL"> 
    <label>EMAIL</label> 

    <button onclick="SubmitIt();">Submit</button> 
</form>