Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 提交时的事件触发器_Javascript_Jquery_Forms_Coffeescript - Fatal编程技术网

Javascript 提交时的事件触发器

Javascript 提交时的事件触发器,javascript,jquery,forms,coffeescript,Javascript,Jquery,Forms,Coffeescript,我想在用户提交表单后执行javascript验证。jQuery.submit()的文档清楚地说明: 当用户试图提交表单时,提交事件被发送到元素 但是如果我把 $('form.simple_form.new-channel').submit perform_validation() 在我的代码中,perform\u validation()会在每次呈现页面时触发!即使上面没有表单,也没有“提交”按钮。提交表单后调用函数的正确方法是什么?我相信您不希望在提交表单后触发操作,您只希望在用户单击“提交

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

当用户试图提交表单时,提交事件被发送到元素

但是如果我把

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

在我的代码中,
perform\u validation()
会在每次呈现页面时触发!即使上面没有表单,也没有“提交”按钮。提交表单后调用函数的正确方法是什么?

我相信您不希望在提交表单后触发操作,您只希望在用户单击“提交”按钮后运行它

如果是这样的话,它不会工作吗

$('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_验证函数应返回布尔值

编辑:

您编写的函数如下所示:

$('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上运行,函数名作为参数传递。

问题在于语法

$('form.simple_form.new-channel').submit perform_validation()
由于javascript的自由性,您在这里没有调用submit,并且在执行\u验证后没有半冰激凌。。。不会导致任何错误,但只需调用执行验证,就好像它自己在一条线上一样,使用一个分号

要更正此问题,请执行此操作

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

那么,你的答案和ym问题中的代码有什么区别?在这种情况下,你如何理解这些区别$('form.simple\u form.new-channel')。submit只检索form.simple\u form.new-channel的提交函数代码。在编写时执行_validation(),它将运行此函数。您编写它的方式与此类似:$('form.simple\u form.new channel').submit;执行_验证()@Leo看看这一点,看看有什么不同:@pomeh Answer You
ve所附的内容在这里并不真正相关。太好了,我现在明白你的意思了,它起作用了,我马上就接受你的回答!你刚刚犯了同样的错误;过早调用。读这一条:@entio是对的。这两行是等效的,但第一行是
$('form.simple\u form.new channel')。submit perform\u validation()
只是CoffeScript代码,在
submit
method@DaleCorns只有当他们不回答OP问题时,你才能投他们反对票,而这正是你的答案。你可以编辑并更正你的答案,然后我可以删除我的否决票,但既然已经有一个被接受的答案,那就毫无意义了。