получить значение ввода текста при нажатии клавиши enter

Я пытаюсь это:

<input type="text" placeholder="some text" class="search" onkeydown="search()"/>
<input type="text" placeholder="some text" class="search" onkeydown="search()"/>

С некоторым javascript, чтобы проверить, нажата ли клавиша enter:

function search() {
    if(event.keyCode == 13) {
        alert("should get the innerHTML or text value here);
    }
}

на данный момент это работает нормально, но мой вопрос, Как получить значение внутри текстового поля, я думал о передаче ссылки "это" на функцию, или если бы у них были id, тогда я мог бы использовать ID, но тогда я не вижу, как я мог бы различать, какой из них был набран, возвращая меня к той же проблеме снова...

5 ответов


попробуйте это:

<input type="text" placeholder="some text" class="search" onkeydown="search(this)"/>  
<input type="text" placeholder="some text" class="search" onkeydown="search(this)"/>

JS-код

function search(ele) {
    if(event.key === 'Enter') {
        alert(ele.value);        
    }
}

демо-ссылке


$("input").on("keydown",function search(e) {
    if(e.keyCode == 13) {
        alert($(this).val());
    }
});

пример jsFiddle:http://jsfiddle.net/NH8K2/1/


просто используя объект события

function search(e) {
    e = e || window.event;
    if(e.keyCode == 13) {
        var elem = e.srcElement || e.target;
        alert(elem.value);
    }
}

что-то вроде этого (не проверял, но должно работать)

передайте это как параметр в Html:

<input type="text" placeholder="some text" class="search" onkeydown="search(this)"/>

и предупредите значение параметра, переданного в функцию поиска:

function search(e){
  alert(e.value);
}

вы не должны размещать код Javascript в своем HTML, так как вы даете этим вводам класс ("Поиск"), нет причин делать это. Лучшим решением было бы сделать что-то вроде этого :

$( '.search' ).on( 'keydown', function ( evt ) {
    if( evt.keyCode == 13 )
        search( $( this ).val() ); 
} );