jquery.form.js beforeSubmit失效问题。

引用jquery.form.js     ajaxsubmit 来提交form表单,回自动提交表单中所有数据,根据name匹配。

初始代码如下:

//验证注册
function validateRegist(){
	if($("#registerEmail").val().trim() == ""){
		floatLayer("请输入email");
		return false;
	};
}

function registNew(){
	var optionsNew = {
		beforeSubmit: validateRegist(),
		url : $("#ctx").val() + "/register/create",
		success : function(response) {
			if(response.isSuccess == "true"){
				floatLayer("注册成功,请您登录系统。");
				//window.location.href = window.location.href.replace(/#/g,'');
			}else{
				floatLayer(response.msg);
			}
		},
		error : function(){
			alert(JSON.stringify(response));
		},
		type : "post",
		clearForm : false,
		timeout : 100000
	};
	$("#register").ajaxSubmit(optionsNew);// type="button"
};

但是,无论validateRegister()方法返回值为,true或者false,ajaxSubmit都能提交。

修改代码如下来进行测试。

直接吧beforeSubmit : false,

function registNew(){
	var optionsNew = {
		beforeSubmit: false,
		url : $("#ctx").val() + "/register/create",
		success : function(response) {},
		error : function(){},
		type : "post",
		clearForm : false,
		timeout : 100000
	};
	$("#register").ajaxSubmit(optionsNew);// type="button"
};

表单能提交。

修改为如下代码。

function registNew(){
	var optionsNew = {
		beforeSubmit: function(){
			return false;
		},
		url : $("#ctx").val() + "/register/create",
		success : function(response) {},
		error : function(){},
		type : "post",
		clearForm : false,
		timeout : 100000
	};
	$("#register").ajaxSubmit(optionsNew);// type="button"
};

ajaxSubmit方法不能提交。    成功。

也就是说,beformSubmit后,必须跟方法体,而不是跟方法返回值。

比如方法   validate();

需要写  beforeSubmit : validate,

而不是  beforeSubmit : validate(),

第一种是,指定某个方法。

第二种是,执行某个方法。

因此,也可以理解为啥直接 配置 beforeSubmit : false,不能成功的原因了。

function validate (){

return false ;

}

如果你  alert(validate );

则会输出整个方法,

而你alert(validate());

则会输出 false.

差别应该就在这个地方。

最后成功的代码如下:

function registNew(){
	var optionsNew = {
		beforeSubmit: validateRegist,
		url : $("#ctx").val() + "/register/create",
		success : function(response) {
			if(response.isSuccess == "true"){
				floatLayer("注册成功,请您登录系统。");
				//window.location.href = window.location.href.replace(/#/g,'');
			}else{
				floatLayer(response.msg);
			}
		},
		error : function(){
			alert(JSON.stringify(response));
		},
		type : "post",
		clearForm : false,
		timeout : 100000
	};
	$("#register").ajaxSubmit(optionsNew);// type="button"
};

下面是jquery.form.js的  beforeSubmit 的源码:

// give pre-submit callback an opportunity to abort the submit
        if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {
            log('ajaxSubmit: submit aborted via beforeSubmit callback');
            return this;
        }
时间: 2024-09-09 09:05:50

jquery.form.js beforeSubmit失效问题。的相关文章

jquery.form.js失效问题。

项目中引用 jquery.form.js插件. 打算用      .ajaxForm(options);    方式提交到后台,但是发现  .ajax 是可以正常交互的,但是  .ajaxform 就是不行. 首先 在form表单中,button的type问题.  form表单中,button 的 type 有三种值. 分别是: reset : 如果button type="reset"   在没有任何事件 的条件下,会清空当前 form 的所有内容. button: 默认,就是一个按

jquery.form.js实现将form提交转为ajax方式提交的方法

 这个框架集合form提交.验证.上传的功能.  这个框架必须和jquery完整版结合,否则使用min则无效. 原理:利用js进行对form进行组装成ajax的url和data,原理还是用ajax来提交,其实这完全可以自己写,但是有这个框架可能会更简单. 一.最简单例子: 第一步:引用js  1 2 3 4 <!--这里的min是自己用js压缩工具对完整版进行的压缩 并不是真正的min,所以好使--> <script type="text/javascript" sr

jquery.form.js实现将form提交转为ajax方式提交的方法_jquery

本文实例讲述了jquery.form.js实现将form提交转为ajax方式提交的方法.分享给大家供大家参考.具体分析如下: 这个框架集合form提交.验证.上传的功能. 这个框架必须和jquery完整版结合,否则使用min则无效. 原理:利用js进行对form进行组装成ajax的url和data,原理还是用ajax来提交,其实这完全可以自己写,但是有这个框架可能会更简单. 一.最简单例子: 第一步:引用js <!--这里的min是自己用js压缩工具对完整版进行的压缩 并不是真正的min,所以好

使用jQuery.form.js/springmvc框架实现文件上传功能_jquery

使用的技术有jquery.form.js框架, 以及springmvc框架.主要实现异步文件上传的同时封装对象,以及一些注意事项. 功能本身是很简单的,但是涉及到一些传递参数类型的问题.例如:jquery的ajax方法与jquery.form.js中的ajaxSubmit方法的参数,具体细节将在下一篇博客中分享. 重点: html表格三要素: action="fileUpload/fileUpload" method="post" enctype="mul

jQuery插件之jQuery.Form.js用法实例分析(附demo示例源码)_jquery

本文实例讲述了jQuery插件之jQuery.Form.js用法.分享给大家供大家参考,具体如下: 一.jQuery.Form.js 插件的作用是实现Ajax提交表单. 方法: 1.formSerilize()  用于序列化表单中的数据,并将其自动整理成适合AJAX异步请求的URL地址格式. 2.clearForm()   清除表单中所有输入值的内容. 3.restForm    重置表单中所有的字段内容.即将所有表单中的字段恢复到页面加载时的默认值. 疑问:ajaxForm()与ajaxSub

jquery.form.js框架实现文件上传功能案例解析(springmvc)_jquery

上一篇 Bootstrap自定义文件上传下载样式(http://www.jb51.net/article/85156.htm)已经有一段时间了,一直在考虑怎么样给大家提交一篇完美的逻辑处理功能.现在我结合自己的实际工作给大家分享一下. 使用的技术有jquery.form.js框架, 以及springmvc框架.主要实现异步文件上传的同时封装对象,以及一些注意事项. 功能本身是很简单的,但是涉及到一些传递参数类型的问题.例如:jquery的ajax方法与jquery.form.js中的ajaxSu

jQuery.form.js插件不能解决连接超时(timeout)的原因分析及解决方法_jquery

jQuery.form.js是一个form插件,支持ajax表单提交和ajax文件上传. 最近在使用jquery.form.js提交包含文件的表单时,碰到了一个问题:当碰上网速较慢时,而我们又设置了timeout时,例如: var options = { timeout: 3000 //限制请求的时间,当请求大于3秒后,跳出请求 } 我们的页面会死在这里,贴上F12开发者工具返回的结果: 此时,我们并没有处理错误的回调函数,而百度出来的例子中也只有这两个回调函数: beforeSubmit: s

jquery.form.js用法之清空form的方法

 这篇文章主要介绍了jquery.form.js清空form的方法,需要的朋友可以参考下 本段代码摘取自jquery.form.js中,由于觉得该方法的使用性非常强,同时也可独立拿出来使用. 该段代码言简意赅可以很好的作为学习参考.  代码如下: /**  * Clears the form data. Takes the following actions on the form's input fields:  * - input text fields will have their 'v

基于jQuery通过jQuery.form.js插件实现异步上传_jquery

本文主要从前台和后台代码分析了jquery.form.js实现异步上传的方法,分享给大家,具体代码如下 前台代码: @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <script src="~/Scripts/jquery-1.7.2.min.j