使用e.preventDefault()时无法在输入框中键入;

时间:2014-07-04 10:00:49

标签: javascript jquery ajax

当用户在html输入框中输入(使用键盘)时,我正试图在我的网站上调用Ajax搜索功能。为了防止在按Enter后页面加载我在ajax调用中使用e.preventDefault();但是我无法输入输入框。它工作正常但无法输入输入框。你能告诉我我做错了什么吗?

$(document).keypress(function(e) {
     e.preventDefault();

     var value = $('#txt_name').val();

     if(e.which == 13) {
        $.ajax({
        type:"POST",
        url:"doSearchEnter.php",
        data:{
            'key' : value
             },
        success:function(res){
            $('#showSearchResult').html(res);
             }
       });
    }
});

2 个答案:

答案 0 :(得分:0)

e.preventDefault();移到条件中,如:

$(document).keypress(function(e) {


var value = $('#txt_name').val();

if(e.which == 13) {
    e.preventDefault();
    $.ajax({
    type:"post",
    url:"doSearchEnter.php",
    data:{
        'key' : value
        },
    success:function(res){
        $('#showSearchResult').html(res);
        }
   });
  }
});

答案 1 :(得分:0)

您无法输入input,因为您取消了所有击键的默认行为!

您应该只为enter键阻止它:

$(document).keypress(function(e) {
    var value = $('#txt_name').val();
    if(e.which == 13) {
        e.preventDefault();    // Moved this into here.
        $.ajax({ ...
    }
});