0

背景: Facebook の壁に似たページを作成しています。このページには多くの投稿があり、すべての投稿にコメントできるはずです。したがって、この 1 つのページには多くのフォームがあります (もちろん)。そして、私はそれらのうちの1つだけを提出する必要があります。

そうです、私はこの質問に対する答えを見つけましたが、どれもうまくいかないので、ここで尋ねます:

私はこのようなフォームを得ました:

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

テキストボックスを使用すると機能しますが、テキストエリアを使用すると機能しません。Enter キーを押しても何も起こりません。

4

3 に答える 3

1

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');
        }
    });
});

ただし、これには注意してください。新しい行ごとに送信されます。人々はテキストエリアに複数行のテキストを書く傾向があるため、この動作は予期しないものになる可能性があります

于 2012-11-15T16:32:35.333 に答える
0

このコードフローは、jsfiddleテストで正常に機能します。(IE)と(その他すべて)で十分なのでe.charCode、を使用しないでください。この質問を参照してください。e.keyCodee.which

また、フォームを見つけるためのコードは非常に複雑で必要ないため、次のように変更します。

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

これに:

target.form.submit();
于 2012-11-15T19:22:57.503 に答える
-2

前と同じように、テキストエリアをフォーム内にネストしますが、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>

次に、ジュラのコードをそのように調整すると、テキストフィールドが存在する正しいフォームを参照する必要があります。

$(function(){

  $('.comment').on('keyup', function(e){

    if (e.keyCode == 13) {

      $(this).parent('form').trigger('submit');

    }
  });
});
于 2012-11-15T16:56:50.783 に答える