2

これを見て、いくつかのことを見つけましたが、私が望むように機能するものは何もないようです。

最初は、解決策は Internet Explorer と chrome で動作していましたが、firefox では動作しませんでした (これは、動作していないのが不満です)。

私が探しているのは、Enter キーでデータを送信する単純なテキスト領域ですが、Shift + Enter で新しい行を作成します。以下は私が持っているものです

function goReturn(e,str) {

  var e = (window.Event) ? e.which : e.keyCode;
  if (e.shiftKey && e=="13") {
    document.getElementById("wall").value = 
        document.getElementById("wall").value+"\n";
  } else if(e=="13"){
    // ...continue to send data
  }
}

これは入力時にデータを送信しますが、シフトと入力時にもデータを送信します(これが私の問題です)。

ご協力ありがとうございます

4

3 に答える 3

1

イベントの伝播をキャンセルできるはずですが、現在、変数 (イベント オブジェクト)e.cancel = true;を上書きしているようです。eコードを次のように変更する場合は、問題ありません。

function goReturn(e_obj,str) {

  var e = (window.Event) ? e_obj.which : e_obj.keyCode;
  if (e.shiftKey && e=="13") {
    document.getElementById("wall").value = 
        document.getElementById("wall").value+"\n";
    e_obj.cancel = true;
  } else if(e=="13"){
    // ...continue to send data
  }
}
于 2011-01-05T15:48:23.127 に答える
1

フォームで送信呼び出しをキャッチします (onsubmit="...")。そこで、最後enterが との組み合わせであったかどうかを確認しshiftます。はいの場合は、送信リクエストに false を返します。

戻るだけで十分かどうかを試すこともできfalseますe.shiftKey && e=="13"

于 2011-01-05T13:30:11.790 に答える
0

私は自分のユースケース用に jQuery プラグインを作成しました。

プラグインはリターン キーの処理を処理し、動作を説明するためにフォーカスに関するヒントも表示します。

于 2011-06-04T13:53:13.690 に答える