我使用jQuery验证插件的validate方法设置表单验证,我有一个提交处理程序来修改输入元素的值(我使用YUI编辑器,它需要saveHTML()调用将iframe的内容复制到textarea元素.).提交表单时,我希望验证程序在执行提交处理程序后验证表单.但是如果在验证调用之后注册它,则它不会执行我的提交处理程序.
例如,
<form id="form1" action="/test">
<input type="text" name="txt1" id="txt1" />
<input type="submit" value="submit" />
Run Code Online (Sandbox Code Playgroud)
$(document).ready(function() {
$("#form1").submit(function() {
$("#txt1").val("123456");
});
$("#form1").validate({
rules: {
txt1: {
maxlength: 5
}
}
});
});
Run Code Online (Sandbox Code Playgroud)
在我的提交处理程序之后验证表单,以便取消提交.
$(document).ready(function() {
$("#form1").validate({
rules: {
txt1: {
maxlength: 5
}
}
});
$("#form1").submit(function() {
$("#txt1").val("123456");
});
});
Run Code Online (Sandbox Code Playgroud)
但是,如果我更改顺序,则在我的提交处理程序之前验证表单.
您可以使用beforeSubmit回调来设置值:
$(function() {
$('#form1').validate({
rules: {
txt1: { maxlength: 5 }
},
beforeSubmit: function(arr, $form, options) {
$('#txt1').val('123456');
return true;
}
});
});
Run Code Online (Sandbox Code Playgroud)
尝试
$(document).ready(function() {
$("#form1").submit(function() {
$("#txt1").val("123456");
$("#form1").validate({
rules: {
txt1: {
maxlength: 5
}
}
});
});
});
Run Code Online (Sandbox Code Playgroud)
这样验证将由您的提交事件处理程序触发。