[英]How to validate multiple checkbox to check atleast one in jquery/javascript?
我在這個論壇上看到了很多關於多復選框驗證的例子,但我的情況不同。 我有兩組同名的復選框,我想在每組中至少檢查一個。
這是代碼
<div class=main> question one here *******? <input type="checkbox" name="option[]" />checkbox 1 <input type="checkbox" name="option[]" />checkbox 2 <input type="checkbox" name="option[]" />checkbox 3 <input type="checkbox" name="option[]" />checkbox 4 </div> <div class=main> question two here *******? <input type="checkbox" name="option[]" />checkbox 1 <input type="checkbox" name="option[]" />checkbox 2 <input type="checkbox" name="option[]" />checkbox 3 <input type="checkbox" name="option[]" />checkbox 4 </div>
我已經嘗試了很多但沒有運氣..任何幫助都會很棒。
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(document).ready(function(){
});
function JXX_Check()
{
$('.main').each(function(){
if ($(this).find('input[type="checkbox"]:checked').length <=0)
{
alert('atleast select one checkbox in div with index '+ $(this).index() );
}
});
}
</script>
</head>
<body>
<input type='button' value='check' onClick='JXX_Check();'/>
<div class=main>
<br>
question one here *******?
<input type="checkbox" name="option" value="Bike1"/>checkbox 1<br>
<input type="checkbox" name="option" value="Bike2"/>checkbox 2<br>
<input type="checkbox" name="option" value="Bike3"/>checkbox 3<br>
</div>
<div class=main>
<br>
question two here *******?
<input type="checkbox" name="option" value="Bike1"/>checkbox 1<br>
<input type="checkbox" name="option" value="Bike2"/>checkbox 2<br>
<input type="checkbox" name="option" value="Bike3"/>checkbox 3<br>
</div>
</body>
</html>
使用:checked
with length 來檢查復選框的數量。
在你的情況下,檢查$(this).find('input[type="checkbox"]:checked').length
特別設置。
$('.main').each(function(){
console.log($(this).find('input[type="checkbox"]:checked').length);
});
$('#checkValid').click(function(){ $('.main').each(function(){ if($(this).find('input[type="checkbox"]:checked').length == 0) { alert("please select at-least one checkbox"); } }); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="main"> question one here *******? <input type="checkbox" name="option[]">checkbox 1 <input type="checkbox" name="option[]"> checkbox 2 <input type="checkbox" name="option[]">checkbox 3 <input type="checkbox" name="option[]"> checkbox 4 </div> <div class="main"> question two here *******? <input type="checkbox" name="option[]">checkbox 1 <input type="checkbox" name="option[]"> checkbox 2 <input type="checkbox" name="option[]">checkbox 3 <input type="checkbox" name="option[]"> checkbox 4 </div> <button id="checkValid">Check valid</button>
您可以使用every()
來檢查每個.main
是否至少有一個選中的復選框
var valid = $('.main').toArray().every(function(item) {
return $(item).find('input[type="checkbox"]:checked').length >= 1;
});
$('#test').on('click', function() { var valid = $('.main').toArray().every(function(item) { return $(item).find('input[type="checkbox"]:checked').length >= 1; }); alert(valid) });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class=main> question one here *******? <input type="checkbox" name="option[]">checkbox 1 <input type="checkbox" name="option[]"> checkbox 2 <input type="checkbox" name="option[]">checkbox 3 <input type="checkbox" name="option[]"> checkbox 4 </div> <div class=main> question two here *******? <input type="checkbox" name="option[]">checkbox 1 <input type="checkbox" name="option[]"> checkbox 2 <input type="checkbox" name="option[]">checkbox 3 <input type="checkbox" name="option[]"> checkbox 4 </div> <br/><br/> <input type="button" value="Validate" id="test">
您應該遍歷所有 .main 元素,然后檢查它們對應的復選框。
$('#check').click(function() { $('.main').each(function() { if ($(this).find(':checkbox:checked').length == 0) alert($(this).text() + ': no option was checked'); }); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class=main> question one here *******? <input type="checkbox" name="option[]" />checkbox 1 <input type="checkbox" name="option[]" />checkbox 2 <input type="checkbox" name="option[]" />checkbox 3 <input type="checkbox" name="option[]" />checkbox 4 </div> <div class=main> question two here *******? <input type="checkbox" name="option[]" />checkbox 1 <input type="checkbox" name="option[]" />checkbox 2 <input type="checkbox" name="option[]" />checkbox 3 <input type="checkbox" name="option[]" />checkbox 4 </div> <button id="check">Check</button>
您可以附加一個click
事件來驗證按鈕。 比檢查所有.main
是否至少檢查了一個復選框輸入:
$('#validate').on('click', function() { $('.main').each(function() { if (!$(this).find('input:checkbox:checked').length) { alert('You have to check at least one answer by question.'); return false; } // Your code... }); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class=main> question one here *******? <input type="checkbox" name="option[]">checkbox 1 <input type="checkbox" name="option[]"> checkbox 2 <input type="checkbox" name="option[]">checkbox 3 <input type="checkbox" name="option[]"> checkbox 4 </div> <div class=main> question two here *******? <input type="checkbox" name="option[]">checkbox 1 <input type="checkbox" name="option[]"> checkbox 2 <input type="checkbox" name="option[]">checkbox 3 <input type="checkbox" name="option[]"> checkbox 4 </div> <button id="validate">Validate</button>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.