javascript中如何用jQuery使validate验证表单成功后再执行自定义函数?
答案:1 悬赏:30 手机版
解决时间 2021-11-23 08:38
- 提问者网友:趣果有间
- 2021-11-23 02:53
javascript中如何用jQuery使validate验证表单成功后再执行自定义函数?
最佳答案
- 五星知识达人网友:神鬼未生
- 2021-11-23 03:02
很简单。
$("#frmClient").validate({
rules: {
txtClientName: {
required: true,
minlength: 2
},
success: function(label) {
onSave();
}
});追问其实我有两个按钮btnSave和btnSaveThenReset两个按钮,分别执行onSave()操作和btnSaveThenReset()两个函数。怎么办呢?追答也很简单,首先$("#frmClient").validate的返回值是一个validator对象,你用这个代码就可以resetForm了。
var validator = $("#frmClient").validate(......);
validator.resetForm();
另外还有一个方法,就是给两个按钮定义click事件,然后点击后是可以拿到哪个按钮被点击了。这样的话前面的代码都可以改,先在 document ready时定义var validator = $("#frmClient").validate(......);
在点击按钮后使用validator.form()去校验,这个方法会返回一个布尔值以确认是否通过校验,这样的话用这段代码
if(validator.form()) {
onSave();
if(btn.text =="btnSaveThenReset"){
validator.resetForm();
}
}
大概就是这样了,要是对你有帮助请把分给我吧。追问百度不让我贴字了。求你再看下,我纠结几天了。按你的第二种方法,点击了save按钮后,我onSave里$.post()函数的alert()显示不了。这超出了问题本身,但还是想请你帮忙解决下。这是我写的,麻烦预览下,http://www.boxcn.net/shared/j8pp5maliq 分会给你的,无论是否解答。追答post一定是会刷新页面的,如果希望页面不刷新可以用ajax方式做提交,我建议的是用ajax来做提交,这样的好处是用户体验比较好。但是问题也很明显,例如有可能会有浏览器不支持ajax代码,js跨域访问的问题。你这段代码如果希望不要刷新,那你就在validate中重写提交,而不是用$.post方式做提交。重写提交的方式是
submitHandler:function(form){
//dosomething
form.submit();//默认提交,还是会刷新页面
//ajax提交,不会刷新页面,但是可能会出现我上面提到的问题
$.ajax({
url: "../../handler/CRMLayer.ashx",
data: postData,//postData的内容自己去拼
success: function(resultString){
alert(resultString);
}
});
}
对了,提醒一句$.ajax可以指定type属性,GET/POST...,如果希望按顺序再执行一些代码,可以指定为同步,用async:false。你的问题绝对不会只有一个解,我只是给你一个思路,具体如何解决你还要自己花些心思。
$("#frmClient").validate({
rules: {
txtClientName: {
required: true,
minlength: 2
},
success: function(label) {
onSave();
}
});追问其实我有两个按钮btnSave和btnSaveThenReset两个按钮,分别执行onSave()操作和btnSaveThenReset()两个函数。怎么办呢?追答也很简单,首先$("#frmClient").validate的返回值是一个validator对象,你用这个代码就可以resetForm了。
var validator = $("#frmClient").validate(......);
validator.resetForm();
另外还有一个方法,就是给两个按钮定义click事件,然后点击后是可以拿到哪个按钮被点击了。这样的话前面的代码都可以改,先在 document ready时定义var validator = $("#frmClient").validate(......);
在点击按钮后使用validator.form()去校验,这个方法会返回一个布尔值以确认是否通过校验,这样的话用这段代码
if(validator.form()) {
onSave();
if(btn.text =="btnSaveThenReset"){
validator.resetForm();
}
}
大概就是这样了,要是对你有帮助请把分给我吧。追问百度不让我贴字了。求你再看下,我纠结几天了。按你的第二种方法,点击了save按钮后,我onSave里$.post()函数的alert()显示不了。这超出了问题本身,但还是想请你帮忙解决下。这是我写的,麻烦预览下,http://www.boxcn.net/shared/j8pp5maliq 分会给你的,无论是否解答。追答post一定是会刷新页面的,如果希望页面不刷新可以用ajax方式做提交,我建议的是用ajax来做提交,这样的好处是用户体验比较好。但是问题也很明显,例如有可能会有浏览器不支持ajax代码,js跨域访问的问题。你这段代码如果希望不要刷新,那你就在validate中重写提交,而不是用$.post方式做提交。重写提交的方式是
submitHandler:function(form){
//dosomething
form.submit();//默认提交,还是会刷新页面
//ajax提交,不会刷新页面,但是可能会出现我上面提到的问题
$.ajax({
url: "../../handler/CRMLayer.ashx",
data: postData,//postData的内容自己去拼
success: function(resultString){
alert(resultString);
}
});
}
对了,提醒一句$.ajax可以指定type属性,GET/POST...,如果希望按顺序再执行一些代码,可以指定为同步,用async:false。你的问题绝对不会只有一个解,我只是给你一个思路,具体如何解决你还要自己花些心思。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯