使用按键提交单个表单元素

时间:2016-01-10 00:04:52

标签: javascript jquery forms

我有一个部分显示相关博文的所有答案,其中添加了评论添加功能

 <div id='answerwrapper'>
      <?php foreach($answerStuff as $answer){?>
     <div class='styleanswer'><?php echo $answer->answer_body;?></div>
     <a href='' class='cmnt'>comment</a>
     <form>
           <textarea class='answerComment' placeholder=' add a comment......' ></textarea>
     </form>
     <hr>
     <?php } ?>
</div>

有多个答案,所以应该有多个表单元素和注释textfield。我想要的是按回车键提交每个新评论。问题是我无法弄清楚如何在工作时访问特定表单与特定textarea.I添加此行以提交表单,但它不起作用

$(this).form.submit() 

我可以管理的是以下内容:

var comment=$('.cmnt');
var textarea=$('.answerComment');
for(i=0;i<comment.length;i++){
   (function(i){
        $(comment[i]).click(function(e){
            e.preventDefault();
            $(textarea[i]).show();
            $(textarea[i]).keypress(function(e){
                if(e.which===13){
                  $(this).form.submit()   //does nothing, need to submit the particular form element from here
                } 
            });
            $(this).hide();
        });
    })(i);
}

任何人都可以帮我解决这个问题吗?谢谢:))

2 个答案:

答案 0 :(得分:1)

您可以使用document.activeElement选择当前突出显示的输入框。然后在输入键按下时通过Ajax post调用将该元素的值提交到服务器。

像(未经测试)的东西:

window.addEventListener("keydown", function(event) {
  event.preventDefault();
  var el = document.activeElement;
  if(e.which == 13) {
    $.ajax({
      url: [your url],
      data: JSON.stringify({name: el.name, value: el.value}),
      method: "POST",
      contentType: "application/x-www-form-urlencoded"
    }).success(function(data) {
      console.log("yay my untested code worked and stuff was submitted");
    })
  }
});

答案 1 :(得分:1)

Textarea是这种形式的孩子:     $(本).parent( “形式”)提交();

您可以在jQuery中使用children()和parent()来选择子元素和父元素。