Jquery 按Enter键时咖啡会反复发送PUT请求

Jquery 按Enter键时咖啡会反复发送PUT请求,jquery,ruby-on-rails,json,coffeescript,Jquery,Ruby On Rails,Json,Coffeescript,我有一个coffeescript代码,它接受“Enter”键,以便通过ajax提交表单 $(".text_field.comment").keypress (e) -> if e.which is 13 $(this).blur() form = $(this).closest("form") $.ajax url: form.attr('action') type: "PUT" dataType: "json"

我有一个coffeescript代码,它接受“Enter”键,以便通过ajax提交表单

$(".text_field.comment").keypress (e) ->
  if e.which is 13    
    $(this).blur()
    form = $(this).closest("form")
    $.ajax
      url: form.attr('action')
      type: "PUT"
      dataType: "json"
      data: form.serialize()
    false
这里发生的事情是,它重复发送请求近20次!!!必须采取什么措施来停止重复发送请求

愚蠢的我!答案在于我的控制器。在此之前:

class AnswersController < ApplicationController
  before_filter :authenticate_user!

  def update
    @answer = Answer.find(params[:id])
    if @answer.update_attributes(params[:answer])
      redirect_to(@answer,
        :notice => I18n.t('answer.notice'))
    else
      flash[:error] = @answer.errors.full_messages.to_sentence
      redirect_to @answer
    end 
  end 
end
类应答器控制器I18n.t('answer.notice'))
其他的
flash[:error]=@answer.errors.full_messages.to_句子
将_重定向到@answer
结束
结束
结束
然后我把它改成这样:

class AnswersController < ApplicationController
  before_filter :authenticate_user!

  def update
    @answer = Answer.find(params[:id])

    respond_to do |format|
      if @answer.update_attributes(params[:answer])
        format.json { render :json => @answer }
      else
        format.json { render :json => @answer.errors.full_messages.to_sentence } #output javascript messages
      end
    end
  end
end
类应答器控制器@answer}
其他的
format.json{render:json=>@answer.errors.full_messages.to_句子}输出javascript消息
结束
结束
结束
结束
重复请求的原因是因为它有一个循环请求“GET/answers/1”

“当浏览器注册键盘输入时,按键事件被发送到元素。”-

这对您的情况意味着您经常遇到键盘输入并运行该功能。我相信你所追求的是


@哪一个错误?你说这是反复提交的。现在,它应该只在每次注册keyup事件时提交(大多数情况下每个字母提交一次),它仍然会重复发送请求。尝试通过console.log输出,但它只打印一次。因此,重复的按键可能已经解决了,但是在发送ajax请求时有一些奇怪的地方。
$(".text_field.comment").keyup (e) ->