通过按键提交单个表单元素

submit individual form element with keypress

本文关键字:单个 表单 元素 提交      更新时间:2023-09-26

我有一个部分可以显示相关博客文章的所有答案,并为其添加功能

 <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>

有多个答案,所以应该有多个带有注释文本字段的表单元素。我只想点击回车键提交每个新的评论。问题是,当我使用特定的文本区域时,我不知道如何访问特定的表单。我添加这行是为了提交表格,但它不起作用

$(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);
}

有人能帮我解决这个问题吗?谢谢:)

Textarea是表单的子项,因此:$(this)parent("form").submit();

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

您可以使用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");
    })
  }
});