使用jquery验证插件验证数组输入
我有以下表格。我正在尝试使用jquery验证插件验证输入。我试过一些代码,但不起作用。当我点击submit按钮时,它只是进入表单的操作使用jquery验证插件验证数组输入,jquery,jquery-plugins,jquery-validate,Jquery,Jquery Plugins,Jquery Validate,我有以下表格。我正在尝试使用jquery验证插件验证输入。我试过一些代码,但不起作用。当我点击submit按钮时,它只是进入表单的操作 <form name="voucherform" action="something" method="post"> <input type="text" name="reg_number[]" value="" /> <input type="text" name="reg_number[]" value="" />
<form name="voucherform" action="something" method="post">
<input type="text" name="reg_number[]" value="" />
<input type="text" name="reg_number[]" value="" />
<input type="text" name="reg_number[]" value="" />
<input type="submit" name="submit" value="submit" />
您能告诉我如何使用jquery验证插件验证上述表单吗
谢谢:)
我的Jquery代码:
<script type="text/javascript" src="<?php echo base_url();?>support/datepicker/js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="<?php echo base_url();?>support/js/jquery.validate.js"></script>
<script>
$(document).ready(function() {
// validate signup form on keyup and submit
var validator = $("#voucherform").validate({
showErrors: function(errorMap, errorList) {
$(".errormsg").html($.map(errorList, function (el) {
return el.message;
}).join(", "));
},
wrapper: "span",
rules: {
reg_number[]: {
required: true,
minlength: 2,
remote: {
url: '<?php echo base_url();?>sales/invoice_check', async: false,
type: 'post'
},
}
},
messages: {
reg_number[]: {
required: "Enter Reg Number",
minlength: jQuery.format("Enter at least {0} characters"),
remote: jQuery.format("{0} is already in use")
},
}
});
});
</script>
您有两个问题:
您没有正确选择表单
元素
您正在查找具有id
“voucherform”的表单
,而您的标记不包含该表单。您可能希望将选择器更改为:
$("form[name='voucherform']").validate({ ... });
括号([]
)在JavaScript标识符中无效。这意味着您的脚本没有被正确解析。要解决这个问题,只需将括号中的字段用引号括起来,即'reg\u number[]
而不是reg\u number[]
调整验证代码:
var validator = $("form[name='voucherform']").validate({
showErrors: function(errorMap, errorList) {
$(".errormsg").html($.map(errorList, function(el) {
return el.message;
}).join(", "));
},
wrapper: "span",
rules: {
'reg_number[]': {
required: true,
minlength: 2,
remote: {
url: '<?php echo base_url();?>sales/invoice_check',
async: false,
type: 'post'
}
}
},
messages: {
'reg_number[]': {
required: "Enter Reg Number",
minlength: jQuery.format("Enter at least {0} characters"),
remote: jQuery.format("{0} is already in use")
}
}
});
var validator=$([form[name='voucherform'])。验证({
错误:功能(错误映射、错误列表){
$(“.errormsg”).html($.map(错误列表,函数(el){
返回el.message;
}).加入(“,”);
},
包装器:“span”,
规则:{
“注册号[]”:{
要求:正确,
最小长度:2,
远程:{
url:“销售/发票检查”,
async:false,
类型:“post”
}
}
},
信息:{
“注册号[]”:{
必填项:“输入注册号”,
minlength:jQuery.format(“输入至少{0}个字符”),
远程:jQuery.format(“{0}已在使用”)
}
}
});
示例:这是我的方法
'reg_number[]':{
required:function(){
return $("input[name='reg_number[]']").filter(function(){
return $.trim($(this).val()).length>0
}).length==0
}
}
希望它对您没有什么帮助。您可以在这里找到一个好答案:。在jquery.validate.js中,我们可以找到一个名为checkForm的函数,我们需要对其进行如下修改:
checkForm: function() {
this.prepareForm();
for ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) {
if (this.findByName( elements[i].name ).length != undefined && this.findByName( elements[i].name ).length > 1) {
for (var cnt = 0; cnt < this.findByName( elements[i].name ).length; cnt++) {
this.check( this.findByName( elements[i].name )[cnt] );
}
} else {
this.check( elements[i] );
}
}
return this.valid();
}
checkForm:function(){
这个.prepareForm();
对于(var i=0,elements=(this.currentElements=this.elements());elements[i];i++){
if(this.findByName(elements[i].name).length!=undefined&&this.findByName(elements[i].name).length>1){
对于(var cnt=0;cnt
只需与索引共享一个验证复选框的方法,其中只有一个是必需的
<input type="checkbox" value="0" name="is_appraisal[0]" class="is_appraisal_f siblingcheckbox" id="is_appraisal_f">
<input type="checkbox" value="1" name="is_appraisal[1]" checked="checked" class="is_appraisal_s siblingcheckbox" id="is_appraisal_s">
很抱歉,我认为您的解决方案工作得很好,但我现在注意到,如果您在第一个输入中输入一个值,然后单击“提交”,则系统不会显示将其余输入留空的错误消息:(@black_belt:您的远程规则是否正常工作?如果它失败,可能会导致其余验证失败。他是对的,此解决方案不起作用。如果您从不关注其他输入,则验证仅对第一行元素有效。@mlwacosmos:您看到示例中的问题了吗?该插件似乎无法在此ca中工作se…还有另一个stackoverflow帖子…jquery.validate.js:ans中的某些内容必须更改,特别是这个url:如果元素名称有索引,我在这里找到了最佳答案,它们被视为唯一名称req_number[0]req_number[1]ect。。。。
$.validator.addMethod("onechecked", function (value, elem, param) {
if ($(".siblingcheckbox:checkbox:checked").length > 0) {
return true;
} else {
return false;
}
}, "You must select at least one!");
$.validator.addClassRules("siblingcheckbox", {
onechecked: true
});