我想在用户提交表单后执行javascript验证。 jQuery .submit()
的文档清楚地说:
当用户尝试提交表单时,会将提交事件发送给元素。
但如果我把
$('form.simple_form.new-channel').submit perform_validation()
进入我的代码,每次呈现页面时都会触发perform_validation()
!即使没有表格也没有“提交”按钮。提交表单后调用函数的正确方法是什么?
答案 0 :(得分:2)
我相信您不希望在提交后触发操作,您只想在用户点击提交按钮后运行它。
它不会像那样工作吗?
$('form.simple_form.new-channel').submit(function(e){
if(!perform_validation()){
e.preventDefault(); //prevents form from being submitted if validation fails
return; //exits function
}
})
然后,您的perform_validation函数应返回布尔值。
编辑:
你写了这样的函数:
$('form.simple_form.new-channel').submit perform_validation()
与写作完全相同:
$('form.simple_form.new-channel').submit;
perform_validation();
在您的版本脚本中,只运行perform_validation(),因为它不在事件处理程序中。
你也可以这样做:
$('form.simple_form.new-channel').submit(perform_validation);
这个告诉脚本在表单submit上运行,该函数名称作为参数传递。
答案 1 :(得分:-2)
问题是你的语法。
$('form.simple_form.new-channel').submit perform_validation()
由于javascript的自由性这一事实你没有在这里调用提交而且你在perform_validation之后没有semicolin ...导致没有错误,但只是调用执行验证,就好像它是在线上所有由它自己用一种半纤维素。
要纠正此问题,请执行此操作
$('form.simple_form.new-channel').submit(perform_validation);