2013-03-28 44 views
3

我有3個問題的表單,每個問題有3個收音機選項。如果任何問題留空,我希望表單發送警報。此代碼將只有當所有的問題都留空警報:如果沒有檢查任何收音機選項,則發出警報

if (!$("input").is(':checked')) { 
    alert("You left one blank!"); 
} 

因此,舉例來說,如果我只有一個回答過的問題,我想提醒發送。相反,它繼續與代碼。

回答

3

你有3個單選按鈕組,所以會有3檢查輸入和6個選中輸入,我建議:

if ($("input[type=radio]:checked").length < 3) { 
    alert('Please answer all of the questions'); 
} 
+0

哈哈有趣,我不敢相信我沒有想到這一點。這隻會在每個問題的輸入[radio]被分組在一起(按名稱)時才起作用。所以希望,我想,他們是。 – Ian

+1

+1,但每當問題數量發生變化時,缺點是需要更新硬編碼3。 –

+1

因爲我知道問題的數量永遠不會改變,我確實爲每個問題分組輸入[無線電],這完美地工作。 – Pixel

-1

你可以通過你所有單選按鈕,看看其中是否沒有被選中循環:

$('input[type="radio"]').each(function() { 
     if(! $(this).is(':checked')) { 
      alert('You left one blank!'); 
      return false; //exit function, so alert won't show multiple times 
     } 
    }); 

Example

+0

這會創建一個無限循環 - 「您留下一個空白!警惕不會消失。 – Pixel

+0

不,仍然循環。 – Pixel

+0

@像素你去。 –

3

試試這個:

$(document).ready(function() { 
    $("#btn1").on("click", function() { 
     var count = 0; 
     var questions = $("div.question"); 
     questions.each(function() { 
      if ($(this).find("input").filter('[type="radio"]').filter(":checked").length > 0) { 
       count++; 
      } 
     }); 
     if (count >= questions.length) { 
      alert("all good"); 
     } else { 
      alert("something not checked"); 
     } 
    }); 
}); 

隨着HTML:

<div class="question"> 
    Question 1: 
    <input type="radio" name="radio1" /> 
    <input type="radio" name="radio1" /> 
    <input type="radio" name="radio1" /> 
</div> 

<div class="question"> 
    Question 2: 
    <input type="radio" name="radio2" /> 
    <input type="radio" name="radio2" /> 
    <input type="radio" name="radio2" /> 
</div> 

<div class="question"> 
    Question 3: 
    <input type="radio" name="radio3" /> 
    <input type="radio" name="radio3" /> 
    <input type="radio" name="radio3" /> 
</div> 

<div> 
    <input type="button" id="btn1" value="Submit" /> 
</div> 

http://jsfiddle.net/4yQHv/1/

您可以更改if (count >= questions.length) {===而不是>=以確保完全1個單選按鈕選擇了每一個問題。否則,這允許選擇多個單選按鈕(當它們被name屬性分組時,這不是完全可能的)......但是隻是想指出這一點。

+0

三個問題每個都有三個單選按鈕......是不是這樣,應該還有六個未檢查的按鈕? – Teemu

+0

是的,我正在重讀這個問題並更新 – Ian

+1

@MartinSmith我剛剛更新。我認爲它現在按預期工作 – Ian

0

http://jsfiddle.net/tVUuW/

<form> 
    <input type="radio" name="facepunch" class="facepunch" value="1" /> 
    <input type="radio" name="facepunch" class="facepunch" value="2" /> 
    <input type="radio" name="facepunch" class="facepunch" value="3" /> 
    <br /> 
    <input type="radio" name="stack" class="stack" value="1" /> 
    <input type="radio" name="stack" class="stack" value="2" /> 
    <input type="radio" name="stack" class="stack" value="3" /> 
    <br /> 
    <input id="button" type="button"> 
</form> 

$(document).ready(function(){ 
    $('#button').click(function(){ 
     if(!$("input.facepunch:checked").val()) { 
      alert("Please select facepunch"); 
     } 

     if(!$("input.stack:checked").val()) { 
      alert("Please select stack"); 
     } 
    }); 
}); 

如果只有你可以使用這個方法的收音機幾組,這是驗證用戶數據的一種方法。

,我建議你檢查出的偉大的jQuery插件驗證一個在那裏: jzaefferer pluginbassistance plugin

此外,請務必驗證它在服務器端,以及!用戶可以從其他地方向您的服務器發送請求,或者甚至在其瀏覽器上禁用JavaScript。

+0

如果向下選民解釋什麼是錯的 –

相關問題