我正在使用下一个Jquery Validator脚本;
jQuery.validator.addMethod("letras", function (value, element) {
return this.optional(element) || value == value.match(/^[a-zA-Z ñÑáéíóúüç]+$/);
}, "Only letters.");
$(document).ready(function () {
$('#inscripcion').validate({
errorClass: 'form-control-error',
validClass: 'form-control-sucess',
ignore: "",
submitHandler: function (form) {
if ($("#inscripcion").validate() == true) {
alert("Form not completed");
} else {
form.submit();
}
},
rules: {
nombrer: {
minlength: 2,
letras: true,
required: true
},
apellidor: {
minlength: 2,
required: true
},
cedular: {
minlength: 7,
number: true,
required: true
},
highlight: function (element) {
$(element).closest('.form-group').removeClass('has-success').addClass('has-error');
},
success: function (element) {
$(element).closest('.form-group').removeClass('has-error').addClass('has-success');
}
});
}); // end document.ready
$('#menu a[href="#estudiante"]').click(function (event) {
var estado = $('#inscripcion').valid();
if (estado == false) {
alert("You miss some data please complete it");
}
});
$('#botonestu').click(function (event) {
var estado = $('#inscripcion').valid();
if (estado == false) {
alert("You miss some data please complete it");
}
});
问题在于,如果我使用'ignore:“”,'即使指定的标签已满,当有人点击标签或按钮时我所做的事件也会激活。但是,如果我删除某人可以直接单击提交按钮,它将提交整个表单,即使它是完全空的。而且,即使是form.submit(),提交手册中的“警报”也不起作用。
答案 0 :(得分:0)
您的代码:
submitHandler: function (form) {
if ($("#inscripcion").validate() == true) {
alert("Form not completed");
} else {
form.submit();
}
},
$("#inscripcion").validate()
完全没有意义。 .validate()
只是插件的初始化方法,不 测试方法。多次拨打.validate()
将无效。
根据文档, submitHandler
仅在表单有效时单击提交按钮时触发。这表示测试submitHandler
内的有效性是多余的。换句话说,submitHandler
中的此测试毫无意义,因为无论何时评估if valid
语句,表单 都已有效。
如果你只想做form.submit()
,那么需要删除整个submitHandler
回调选项。这是您不需要覆盖的插件的默认行为。通常,当您希望使用submitHandler
提交表单数据和/或在表单有效时执行其他操作时,将使用.ajax()
回调。
但是,如果您尝试enable validation of hidden fields, use ignore: []
,我不确定您希望使用ignore: ""
实现什么目标。否则,如果您希望忽略隐藏字段以进行验证,请完全删除ignore
选项,因为这已经是插件的默认行为。
您还错误地将highlight
和success
置于rules
内以及rules
上缺少右括号:
$(document).ready(function () {
$('#inscripcion').validate({
// your other options,
rules: {
nombrer: {
...
},
....
highlight: function (element) { // <- incorrectly placed inside "rules" option
$(element).closest('.form-group').removeClass('has-success').addClass('has-error');
},
success: function (element) { // <- incorrectly placed inside "rules" option
$(element).closest('.form-group').removeClass('has-error').addClass('has-success');
}
// <- missing a closing brace "}" here
});
}); // end document.ready
以下是您的代码的工作版本:http://jsfiddle.net/yyxLs/