0

/HTML に 2 つの入力ボックスがあり、それぞれが別個のフォーム要素セットになっています。

<input id="RecommendationDaysInputTextBox" class="NumberOfDaysInputTextBox" name="RecommendationDaysInputTextBox" type="text" value="90" />
<input id="ReviewDaysInputTextBox" class="NumberOfDaysInputTextBox" name="ReviewDaysInputTextBox" type="text" value="360" />

ユーザーがデータを入力した後にエンターキーを押したときにデフォルトの伝播を停止したい(「変更」と「キーアップ」で修正します)。

私はこれを使用しています:

$(".NumberOfDaysInputTextBox").keyup(function(e) {
    if (e.which == 13) {
        e.preventDefault();
        /* e.stopPropagation(); */
        $(this).trigger("change");
    }
});​

最初のボックスでは機能していますが、2 番目のボックスでは機能していません。2 番目に Enter キーを押すと、投稿と更新が行われます (すべてのブラウザー)。これは、ボックスにデータを入力して Enter キーを押す順序に関係なく発生します。

私が間違っていることと、それを正しく行う方法について説明がある人はいますか?

4

2 に答える 2

3

問題は、キーダウン時に送信がすぐにトリガーされることだと思います。代わりに、キーダウン時に実行する関数を設定すると...

$(".NumberOfDaysInputTextBox").keydown(function(e)
{
    if (e.which == 13)
    {
        e.preventDefault();
        e.stopPropagation();
        $(this).trigger("change");
    }
});​

...問題は解決したようです。

ここにフィドルがありますhttp://jsfiddle.net/jthGY/

于 2012-08-03T22:18:05.497 に答える
0

その時点までにデフォルトのアクションがすでにトリガーされているため、keyup を使用したくありません。参照: http://www.quirksmode.org/dom/events/keys.html . keydown の使用を検討してください。

于 2012-08-03T22:21:24.933 に答える