我有3個問題的表單,每個問題有3個收音機選項。如果任何問題留空,我希望表單發送警報。此代碼將只有當所有的問題都留空警報:如果沒有檢查任何收音機選項,則發出警報
if (!$("input").is(':checked')) {
alert("You left one blank!");
}
因此,舉例來說,如果我只有一個回答過的問題,我想提醒發送。相反,它繼續與代碼。
我有3個問題的表單,每個問題有3個收音機選項。如果任何問題留空,我希望表單發送警報。此代碼將只有當所有的問題都留空警報:如果沒有檢查任何收音機選項,則發出警報
if (!$("input").is(':checked')) {
alert("You left one blank!");
}
因此,舉例來說,如果我只有一個回答過的問題,我想提醒發送。相反,它繼續與代碼。
你有3個單選按鈕組,所以會有3檢查輸入和6個選中輸入,我建議:
if ($("input[type=radio]:checked").length < 3) {
alert('Please answer all of the questions');
}
試試這個:
$(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>
您可以更改if (count >= questions.length) {
是===
而不是>=
以確保完全1個單選按鈕選擇了每一個問題。否則,這允許選擇多個單選按鈕(當它們被name
屬性分組時,這不是完全可能的)......但是隻是想指出這一點。
<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 plugin,bassistance plugin
此外,請務必驗證它在服務器端,以及!用戶可以從其他地方向您的服務器發送請求,或者甚至在其瀏覽器上禁用JavaScript。
如果向下選民解釋什麼是錯的 –
哈哈有趣,我不敢相信我沒有想到這一點。這隻會在每個問題的輸入[radio]被分組在一起(按名稱)時才起作用。所以希望,我想,他們是。 – Ian
+1,但每當問題數量發生變化時,缺點是需要更新硬編碼3。 –
因爲我知道問題的數量永遠不會改變,我確實爲每個問題分組輸入[無線電],這完美地工作。 – Pixel