2015-05-06 2 views
0
<form class="navbar-form navbar-right" role="search"> 
    <div class="form-group"> 
     <input id="search_text" type="search" class="form-control" placeholder="Search" size="30"> 
     <div class="form_control" id="search_info" style="width:283px;height:125px;top:86%;position:absolute;background-color:white; border: 1px solid #dce4ec;border-radius: 4px;display:none;"></div> 
    </div> 
    </form> 

$("#search_text").keypress(function(){ 
    if($("#search_text").val().length == 0) 
    { 
     $("#search_info").hide(); 
    } 
    else if($("#search_text").val().length != 0) 
    { 
     $("#search_info").show(); 
    } 
}); 

Моя проблема заключается в том, что с помощью этого кода он будет показывать только $ («#») search_info на 2-й нажатием клавиши. Например, если я печатаю в поле поиска, которое у меня есть как $ ("# search_text"), $ ("# search_info") должно отображаться при первом нажатии, но это не так, когда я больше одного символа в в поле поиска отображается $ ("# search_info").Jquery Keypress распознается после второго нажатия

Я не могу понять это.

+1

прекрасно работает здесь http://jsfiddle.net/bmcoutvb/ –

+0

Это может быть хром, но я все еще был только в состоянии увидеть после второго нажатия клавиши. –

+1

попробуйте использовать keyup, хотя он отлично работает для меня в нескольких браузерах, так как есть – charlietfl

ответ

1

Используйте keyup вместо keypress - так как при нажатии клавиши нажатие кнопки еще не вставлено на вход.

$("#search_text").keyup(function(){ 
    if($("#search_text").val().length == 0) 
    { 
     $("#search_info").hide(); 
    } 
    else if($("#search_text").val().length != 0) 
    { 
     $("#search_info").show(); 
    } 
}); 

http://jsfiddle.net/qxh3x2s6/

Смежные вопросы