提交文本区域表单,无需提交按钮,按回车键



>背景:我正在制作一个类似Facebook的墙面,里面会有很多帖子,你应该能够评论每个帖子。所以在这一页中,有很多形式(当然)。我只需要提交其中之一。

所以

是的,我已经找到了这个问题的答案,但它们都不起作用,所以在这里问:

我得到了这样的表格:

    <form enctype="text/plain" action="submitcomment.php" method="post" target="output_frame" id="comment<?php echo $prepare_data['post_id']; ?>">
    <textarea name="comment" id="comment" onkeypress="return submitViaEnter(event)" value="" autocomplete="off"></textarea>
    <input type="hidden" name="hiddenid" id="hiddenid" value="<?php echo $prepare_data['post_id']; ?>" />
    </form>

我的JavaScript函数看起来像这样:

function submitViaEnter(evt) {
    evt = (evt) ? evt : event;
    var target = (evt.target) ? evt.target : evt.srcElement;
    var form = target.form;
    var charCode = (evt.charCode) ? evt.charCode : ((evt.which) ? evt.which : evt.keyCode);
    if (charCode == 13) {
        document.forms[this.form.id].submit();
        alert("sent!");
        return false;
    }
    return true;
}

如果我使用文本框,它可以工作,但是当我使用文本区域时,它不起作用。尝试按回车键不起作用。

使用 jQuery 并通过 javascript 将函数绑定到事件:

$(function(){
    $('form > textarea').on('keyup', function(e){
        if (e.keyCode == 13) {
            // do whatever you want to do, for example submit form
            $(this).parent('form').trigger('submit');
        }
    });
});

不过要小心 - 它将在每个新行提交。人们倾向于在文本区域中编写多行文本,因此此行为可能是意外的

此代码流在 jsfiddle 测试中工作正常。请注意,您不应该使用 e.charCode ,因为e.keyCode(IE)和e.which(其他所有内容)就足够了。看到这个问题。

此外,用于查找表单的代码过于复杂且没有必要,请更改以下内容:

var form = target.form;
...
document.forms[this.form.id].submit();

对此:

target.form.submit();

像以前一样,将文本区域嵌套在表单中,但给它们类名而不是 id 。这样,jquery 就可以使用该特定类名引用 DOM 中的所有文本区域。

<form name="form1" enctype="text/plain" action="submitcomment1.php" method="post" target="output_frame">
<textarea name="comment1" class="comment" value="" autocomplete="off"></textarea>
</form>
<form name="form2" enctype="text/plain" action="submitcomment2.php" method="post" target="output_frame">
<textarea name="comment2" class="comment" value="" autocomplete="off"></textarea>
</form>

然后,像这样调整 Jura 的代码,它应该引用文本字段所在的正确形式。

$(function(){
  $('.comment').on('keyup', function(e){
    if (e.keyCode == 13) {
      $(this).parent('form').trigger('submit');
    }
  });
});

最新更新