jQuery用enter键提交textarea

时间:2013-11-06 04:51:57

标签: jquery

我有这个简单的sctipt

<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script>
    $(function(){
         $("#message").keypress(function(e){
            var code = (e.keyCode ? e.keyCode : e.which);
            if (code == 13){
                  $("#query").submit();
            }
          });
    });
</script>

和这个html:

<div id="textarea">
    <form name="query" class="form1" id="query" action="query.py" method="post">
        <textarea rows="2" name="message" id="message" class="message" placeholder="RM911 Chat" cols="26"></textarea>
        <input type="submit" id="submit" name="submit1" value="a"/>
    </form>
</div>

如果输入的id是“提交”没有任何作用,如果它的id是别的 - 它可以工作......但整个项目使用“提交”id提交按钮,我不想重命名它(因为CSS)。我有什么可以做的吗?

2 个答案:

答案 0 :(得分:7)

脚本

中试试这个
$("#submit").trigger('click');

完整代码,

$(function () {
    $("#message").keypress(function (e) {
        var code = (e.keyCode ? e.keyCode : e.which);
        //alert(code);
        if (code == 13) {
            $("#submit").trigger('click');
            return true;
        }
    });
});

Demo

答案 1 :(得分:3)

在这里,当按下回车键时,这会提交表单(通过触发提交按钮);并且当您按住Control并按Enter键时,可以创建一个新行。

$(function(){
    function getCaret(el) {
        if (el.selectionStart) {
            return el.selectionStart;
        } else if (document.selection) {
            el.focus();

            var r = document.selection.createRange();
            if (r == null) {
                return 0;
            }

            var re = el.createTextRange(),
                rc = re.duplicate();
            re.moveToBookmark(r.getBookmark());
            rc.setEndPoint('EndToStart', re);

            return rc.text.length;
        }  
        return 0;
    }
    $("#message").keyup(function(e){
        if ((e.keyCode == 13 || e.keyCode == 10) && e.ctrlKey) {
            var content = $(this).val();
            var caret = getCaret(this);
            $(this).val(content.substring(0,caret)+
                        "\n"+content.substring(caret,content.length));
            e.stopPropagation();
        } else if (e.keyCode == 13 || e.keyCode == 10){
            $("#submit").click();
        }
    });
});

这里是Demo

getCaret的{​​{1}}和Ctrl + Enter解决方案的原始密钥代码。