0

Enter地球上の任意のキーボードのキーを押すだけで、以下に示すようにテキストエリアにコンテンツを送信したいと考えています。ユーザーがShift+Enterキーを押すと、キャレットは新しい行に移動するEnter必要があり、送信されたテキストエリアのコンテンツを押すと、Shift+Enter押されたときに新しい行が作成されます。textarea のコンテンツは、クラスを含む div の後に挿入する必要がありますcommentWrapが、最後に送信されたコメントは最後に表示する必要があり、その逆も同様です。

このソリューションがすべてのブラウザで機能することを望みます。

<div class="commentWrap"></div>

<textarea id="test"></textarea>

<script type="text/javascript">
    $(document).ready(function() {
        $("#test").keypress(function(e) {
            var textVal = $(this).val();
            if(e.which == 13 && e.shiftKey) {
                //What should I really do here
            }
            else if (e.which == 13 && ! e.shiftKey) {
                e.preventDefault(); //Stops enter from creating a new line
                //this.form.submit(); //or ajax submit
                if (this.value ==="") {
                    alert("Hey punk! Put some text before you hit enter.");
                }else {
                    alert(textVal);
                    $("<div class='comment'>"+ textVal +"</div>").insertAfter('.commentWrap');
                }
            }
        });
    });
</script>
4

2 に答える 2

1

//ここで本当に何をすべきか

Shift + Enter が押された場合、すべてのブラウザーは新しい行を挿入するので、true を返すことができます。

于 2013-03-22T07:19:50.127 に答える
0

フォームの送信に使用する送信ボタンが既にある場合は、単純にクリック ハンドラーをトリガーできます。

    $("#submitButton").click();
于 2013-03-22T07:28:36.377 に答える