在表单验证的 submithandler ajax 中得到 Uncaught TypeError: form.serialize is not a function
Posted
技术标签:
【中文标题】在表单验证的 submithandler ajax 中得到 Uncaught TypeError: form.serialize is not a function【英文标题】:In form validate's submithandler ajax getting Uncaught TypeError: form.serialize is not a function 【发布时间】:2018-02-15 07:22:24 【问题描述】:在控制台中出现此错误 Uncaught TypeError: form.serialize is not a function 。如何在表单验证提交处理程序的 ajax 中修复此错误?
$('#form').validate(
errorClass: 'fieldError',
onkeyup: false,
onblur: false,
errorElement:'label',
submitHandler: function(form)
$.ajax(
url: form.action,
type: form.method,
data: form.serialize(),
success: function(response)
if (response == false)
alert('could not submit!')
);
);
【问题讨论】:
使用 $('#form').serialize() 仅供参考 - 没有名为onblur
的选项。最接近的选项称为onfocusout
。
【参考方案1】:
根据 jQuery validate 插件的 documentation,submitHandler
回调将本机表单作为唯一参数。
原生表单没有 serialize()
方法,因为它是一个 jQuery 方法。
您必须将本机表单包装在 $()
submitHandler: function(form)
var $form = $(form);
$.ajax(
url : $form.attr('action'),
type : $form.attr('method'),
data : $form.serialize(),
success : function(response)
if (response == false)
alert('could not submit!')
);
);
);
【讨论】:
我已经尝试过这个解决方案,但我是这样做的 var $form = $(this);所以得到另一个例外。现在修复了此解决方案的 +1。谢谢先生! @Haroon,在submitHandler
中,$(this)
是验证器对象,而不是表单。以上是关于在表单验证的 submithandler ajax 中得到 Uncaught TypeError: form.serialize is not a function的主要内容,如果未能解决你的问题,请参考以下文章
防止表单在 jQuery Validate 插件的 submitHandler 函数中提交
jQuery 验证插件:无法在 submitHandler 中调用默认提交
Jquery validate(submitHandler函数)验证通过发送Ajax
jQuery插件Validate验证提交表单submitHandler更改错误信息显示的位置requiredValidator内置验证方式表validate ()的可选项汇总