提交事件触发器

时间:2014-08-27 10:08:48

标签: javascript jquery forms coffeescript

我想在用户提交表单后执行javascript验证。 jQuery .submit()的文档清楚地说:

  

当用户尝试提交表单时,会将提交事件发送给元素。

但如果我把

$('form.simple_form.new-channel').submit perform_validation()

进入我的代码,每次呈现页面时都会触发perform_validation()!即使没有表格也没有“提交”按钮。提交表单后调用函数的正确方法是什么?

2 个答案:

答案 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);