我使用JQuery表单插件(http://malsup.com/jquery/form/)来处理表单的ajax提交。我还为我的客户端验证插入了JQuery.Validate (http://docs.jquery.com/Plugins/Validation)。
我看到的是,当我期望验证失败的时候,它却失败了,但是它并没有阻止表单的提交。当我使用传统表单(即非ajax)时,验证失败导致表单根本无法提交……这是我想要的行为。
我知道验证是正确连接的,因为在ajax提交之后,验证消息仍然出现。
那么,我错过了什么,是什么阻止了我想要的行为?下面的示例代码...
<form id="searchForm" method="post" action="/User/GetDetails">
<input id="username" name="username" type="text" value="user.name" />
<input id="submit" name="submit" type="submit" value="Search" />
</form>
<div id="detailsView">
</div>
<script type="text/javascript">
var options = {
target: '#detailsView'
};
$('#searchForm').ajaxForm(options);
$('#searchForm').validate({
rules: {
username: {required:true}},
messages: {
username: {required:"Username is a required field."}}
});
</script>
发布于 2009-05-10 02:51:18
初始化ajaxForm()时,需要添加与beforeSubmit事件一起使用的回调函数:
var options = {
beforeSubmit: function() {
return $('#searchForm').validate().form();
},
target: '#detailsView'
};
现在,它知道在提交页面之前检查验证结果。
发布于 2010-01-15 15:05:47
..。嗯,已经有一段时间了,所以我的情况发生了一些变化。目前,我有一个submitHandler选项传递给Validate()插件。在处理程序中,我手动使用了ajaxSubmit。我想与其说是答案,不如说是一种变通方法。希望这能有所帮助。
http://jquery.bassistance.de/validate/demo/ajaxSubmit-intergration-demo.html
var v = jQuery("#form").validate({
submitHandler: function(form) {
jQuery(form).ajaxSubmit({target: "#result"});
}
});
发布于 2012-07-01 21:25:14
$('#contactform').ajaxForm({
success : FormSendResponse,
beforeSubmit: function(){
return $("#contactform").valid();
}
});
$("#contactform").validate();
上面的代码对我来说运行得很好。
https://stackoverflow.com/questions/137872
复制相似问题