7

JQuery UI の日付ピッカーにバグがあるようです。ユーザーが手動で日付を入力して Enter キーを押すと、日付ピッカーは閉じますが、フォーカスはフィールドにとどまり、テキストボックスがフォーカスを失って再度取得するまでカレンダーは開きません。Enter キーの動作を抑制するにはどうすればよいですか? または、この一見既知のバグに対する他の既知の解決策はありますか? ありがとう!

編集

これにもう少し取り組んだ後、これが私が思いついた解決策です:

$('#someid').bind('keydown', function(event) {

    if (event.which == 13) {var e=jQuery.Event("keydown");
                    e.which = 9;//tab 
                    e.keyCode = 9;
                    $(this).trigger(e);
                    return false;
                }
            });

タブ キーは適切に機能し、特定のケースで今日の日付を選択するなど、日付ピッカーのエンター キー イベントのデフォルトの動作を防ぎます。

4

5 に答える 5

6

最初はあなたのソリューションを適用するのに問題がありました。もう少しコンテキストを提供する大きなスニペットを投稿する価値があると思いました。

if (!Modernizr.inputtypes.date) {
    //use modernizer to weed out browsers that already have a timepicker 
    //http://stackoverflow.com/questions/11297827/html5-date-input-type-interfering-with-jquery-datepicker

    $("input[data-val-date]")
                    .bind('keydown', function (event) {  // BEGIN APPLYING NinaNa's S.O. ANSWER
                    if (event.which == 13) {
                        var e = jQuery.Event("keydown");
                        e.which = 9;//tab 
                        e.keyCode = 9;
                        $(this).trigger(e);
                        return false;
                    }
    }).datepicker({ dateFormat: 'mm/dd/yy' }); //THEN APPLY JQUERY UI FUNCTIONALITY


}
于 2014-02-25T15:01:55.800 に答える
3

これを試して

$(document).keydown(keyDownHandler); // use appropriate selector for the keydown handler

function keyDownHandler(e) {
    if(e.keyCode === 13) {
        e.stopPropagation();
        e.preventDefault();

        return false;
    }
}

e.stopPropagationバブリングをe.preventDefault防ぎ、デフォルトの動作を防ぎ、 false を返すこともできると思います。

keyUpkeyDownまたはkeyPress. _

于 2013-02-11T08:37:58.077 に答える
2

デートピッカーのonCloseメソッドにblur()イベントを追加することで解決しました。

于 2013-02-11T08:39:47.297 に答える