jal*_*rin 40 html javascript checkbox jquery-validate
我正在尝试使用jquery的validate插件验证表单.我想要求用户检查组中的至少一个复选框,以便提交表单.这是我的jquery代码:
$().ready(function() {
$("#subscribeForm").validate({
rules: { list: {required: "#list0:checked"} },
messages: { list: "Please select at least one newsletter"}
});
});
Run Code Online (Sandbox Code Playgroud)
这是html表单:
<form action="" method="GET" id="subscribeForm">
<fieldset id="cbgroup">
<div><input name="list" id="list0" type="checkbox" value="newsletter0" >zero</div>
<div><input name="list" id="list1" type="checkbox" value="newsletter1" >one</div>
<div><input name="list" id="list2" type="checkbox" value="newsletter2" >two</div>
</fieldset>
<input name="submit" type="submit" value="submit">
Run Code Online (Sandbox Code Playgroud)
问题是即使没有检查任何内容,表单也会提交.我该如何解决这个问题?
小智 52
$('#subscribeForm').validate( {
rules: {
list: {
required: true,
minlength: 1
}
}
});
Run Code Online (Sandbox Code Playgroud)
我认为这将确保至少有一个被检查.
dan*_*ano 30
下面这个脚本应该让你走上正确的轨道?
你可以保持这个html相同(虽然我将方法更改为POST):
<form method="POST" id="subscribeForm">
<fieldset id="cbgroup">
<div><input name="list" id="list0" type="checkbox" value="newsletter0" >zero</div>
<div><input name="list" id="list1" type="checkbox" value="newsletter1" >one</div>
<div><input name="list" id="list2" type="checkbox" value="newsletter2" >two</div>
</fieldset>
<input name="submit" type="submit" value="submit">
</form>
Run Code Online (Sandbox Code Playgroud)
这个javascript验证
function onSubmit()
{
var fields = $("input[name='list']").serializeArray();
if (fields.length === 0)
{
alert('nothing selected');
// cancel submit
return false;
}
else
{
alert(fields.length + " items selected");
}
}
// register event on form, not submit button
$('#subscribeForm').submit(onSubmit)
Run Code Online (Sandbox Code Playgroud)
更新(2012年10月)
此外,应注意复选框必须具有"名称"属性,否则它们将不会添加到数组中.只有"id"才行.
更新(2013年5月)
将提交注册移至javascript并将提交注册到表单上(因为它本来应该是)
更新(2016年6月)
更改==至===
JJ *_*wax 11
这个怎么样:
$(document).ready(function() {
$('#subscribeForm').submit(function() {
var $fields = $(this).find('input[name="list"]:checked');
if (!$fields.length) {
alert('You must check at least one box!');
return false; // The form will *not* submit
}
});
});
Run Code Online (Sandbox Code Playgroud)
Lod Lawson的上述addMethod并不完全正确.它是$ .validator而不是$ .validate,验证器方法名称cb_selectone需要引号.这是我测试的更正版本:
$.validator.addMethod('cb_selectone', function(value,element){
if(element.length>0){
for(var i=0;i<element.length;i++){
if($(element[i]).val('checked')) return true;
}
return false;
}
return false;
}, 'Please select at least one option');
Run Code Online (Sandbox Code Playgroud)
以下是使用jquery验证插件进行多个复选框验证的快速解决方案:
jQuery.validator.addMethod('atLeastOneChecked', function(value, element) {
return ($('.cbgroup input:checked').length > 0);
});
$('#subscribeForm').validate({
rules: {
list0: { atLeastOneChecked: true }
},
messages: {
list0: { 'Please check at least one option' }
}
});
$('.cbgroup input').click(function() {
$('#list0').valid();
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
129152 次 |
| 最近记录: |