2017-06-16 32 views
2

我有一个提交表单的代码,只要我们按下文本区域上的回车键......它可以工作,但代码只运行一次。每当我按下再次输入提交它不起作用。在java脚本中只输入一次只能发送一次作品

这里是我的javascript代码

$('.comment_ta').on("keypress" , function(e){ 

    if (e.which == 13) { 
     $(this).closest('form').submit(); 
    } 

}); 

,这里是表格和文本区域..代码是红宝石ñHAML

=form_for(([c,c.confessioncomments.build]), remote: true) do |f| 
     .cmnt 
      =f.text_area :content class: "form-control comment_ta" 
     =f.submit 'Comment'  , clasS:'btn btn-default cbtn' 

现在它非常适用于第一次,但每当我提交之后呈现新表单不起作用。

+3

表单提交时会发生什么? '.comment_ta'元素是否被销毁并重新添加? –

+0

重新附加相同的类..所以它不应该是一个问题,我猜 –

+0

是的,这是100%的问题,因为你只附加负载的事件处理程序。你需要使用一个委托事件处理程序代替 –

回答

3

给这一个镜头:

$(document).on('keypress', '.comment_ta', function(e){ 

    if (e.which == 13) { 
     $(this).closest('form').submit(); 
    } 

}); 

我想这是因为.comment_ta元素获得的DOM,这意味着.on事件侦听器将不再工作所取代。通过将事件监听器应用于document,事件监听器应该继续工作。

+1

不,它被本地化为'.comment_ta' – rorymorris89

+0

救生员....这工作..谢谢 –