为什么$(form).submit(e)多次触发?

时间:2016-06-18 06:23:29

标签: jquery ruby-on-rails coffeescript

我在rails app中有以下coffeescript功能

if $(".my-form").length 
  $(".my-form").submit (event) ->
    values = {}
    $.each $(this).serializeArray(), (i, field) ->
      values[field.name] = field.value
      return
    console.log(values)

控制台显示,在表单提交时,此功能正在运行4次。

Object {utf8: "✓", my_form[my_field]: "my_value"}
Object {utf8: "✓", my_form[my_field]: "my_value"}
Object {utf8: "✓", my_form[my_field]: "my_value"}
Object {utf8: "✓", my_form[my_field]: "my_value"}

据我所知,没有其他代码可以与此表单进行交互。是否有一个明显的原因,为什么这个功能会多次运行?我应该寻找什么来调试这个?我该怎么做才能防止这种情况发生?

1 个答案:

答案 0 :(得分:0)

感谢Shaunak D的回答。

鼠标单击表单提交按钮似乎多次调用.submit()处理程序。

unbind("submit")会阻止这种情况(只要在正确的地方调用它!)

正确的语法是:

$(".my-form").unbind('submit').bind 'submit', (event) ->
  #actions....