0

我有文本输入元素,并且在模糊事件和用户按下回车时触发了一个事件。

我的问题是,如果用户输入“foo”并按下回车val()函数仍然返回 null,在模糊事件val()返回 foo 之后。据我了解,这是由于 HTML 输入元素的 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 回答