0

テキスト入力要素があり、イベントはぼかしイベントで発生し、ユーザーがEnterキーを押すと発生します。

私の問題は、ユーザーが「foo」と入力してEnterval()関数を押しても、ぼかしイベントval()がfooを返した後、nullを返すことです。私が理解している限りでは、HTML input 要素の value プロパティは、フォーカスを失ったときにのみ更新されるという事実によるものです。回避策を教えてください。

これが私が使用する正確なコードです:

var meetmove_address_field_listener = function(e){
    var type = $(this).attr('data-marker-type');;
    var value = $(this).val();
    meetmove_map.geocodeAddress(type, value);
};

$(document).ready(function(){
    $('input[data-type="name"]').blur(meetmove_address_field_listener);
    $('input[data-type="name"]').keypress(function(event){
        if (event.which == 13){
            event.preventDefault();
            meetmove_address_field_listener(event);
            return false; 
        }
    });
});
4

2 に答える 2

3

値にはすぐにアクセスできます。正しいハンドラーを使用する必要があります。入力に文字が表示される.keypress()に起動します。代わりに試してみてください。うまくいくはずです。.keyup().keypress()

于 2012-04-05T07:54:41.487 に答える
1

本当にSudahirの答えは私の問題を解決しました---コンテキストに応じて意味が変わる$(this)参照を誤用していました。彼は答えを削除したので、ここに動作するコードがあります:

$(document).ready(function(){
    $('input[data-type="name"]').blur(meetmove_address_field_listener);
    $('input[data-type="name"]').keyup(function(event){
        if (event.which == 13){
            event.preventDefault();
            var type = $(this).attr('data-marker-type');
            var value = $(this).val();
            meetmove_map.geocodeAddress(type, value);
            return false;
        }
    });
});
于 2012-04-05T08:11:45.143 に答える