如何通过jQuery获取文本元素的当前值

时间:2012-04-05 07:43:04

标签: javascript jquery html-form

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

我的问题是,如果用户输入“foo”并按下输入val(),则在模糊事件val()返回foo之后,函数仍返回null。据我所知,这是因为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; 
        }
    });
});

2 个答案:

答案 0 :(得分:3)

可以立即访问该值,您只需使用正确的处理程序即可。 {<1}}将在输入中显示字符之前触发。尝试使用.keyup()代替.keypress(),它应该有效。

答案 1 :(得分: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;
        }
    });
});