2017-02-02 7 views
-1

У меня есть HTML форма, как это:ввод в кнопку запуска кнопки?

<form name="f1"> 
<center> 
<strong>Search VMs:</strong> 
<input id='vms' name="word" type="text" size="50" placeholder="Name or IP, space delimited, partial name OK." autofocus autocomplete="off" pattern=".{3,}" required title="3 chars minimum" /> in 
<select name="vc" id='whichvc'> 
    <option value="all" selected="selected">all VCs</option> 
</select> 
<input type="checkbox" id="check4detail" name="detail">Include details 
<input name='searchbutton' value="Search VMs" type="button" onclick='xmlhttpPost("/cgi-bin/search-vm.pl")' /> 
<input value="Clear" type="button" onclick="clearBox('result')" /> 
</center> 
</p> 
<div id="loading"></div> 
<div id="result"></div> 
</form> 

Как вы можете видеть, есть поле ввода текста и несколько других кнопок, одна из которых имеет OnClick() слушателя, связанный с ним. Как я могу вызвать событие onclick на этой кнопке, когда пользователь вводит текст и нажимает клавишу ввода?

Пробовал это решение с форума, но это как-то не работает:

$('#vms').keypress(function(event){ 
if (event.which === 13){ 
$('#searchbutton').click();} 
}); 

Кстати, когда я ввожу текст в поле и нажмите на кнопку поиска, она работает просто отлично. Но введите текст и нажмите enter, чтобы не вызвать событие поиска.

+0

Я не думаю, что JQuery события вызывают не-Jquery слушателей, не так ли? – mhodges

+0

@mhodges Если вы имеете в виду '$ ('# searchbutton'). Click();' запускать функцию в атрибуте 'onclick', так оно и есть. Простая демонстрация: https://jsfiddle.net/v11y6kab/. Подробности в документах для ['trigger'] (http://api.jquery.com/trigger/). –

+0

Возможный дубликат [Запуск кнопки с помощью JavaScript на клавише Enter в текстовом поле] (http://stackoverflow.com/questions/155188/trigger-a-button-click-with-javascript-on-the-enter -key-in-a-text-box) –

ответ

0

Измените тип кнопки на submit. Кнопки «Отправить» захватывают клавишу ввода, когда она нажата в одном из изменений в той же форме. В приведенном ниже примере вы можете проверить его. Поместите курсор в поле редактирования и нажмите клавишу ввода. Вы должны получить предупреждение.

<form action="" method="get" onsubmit="return false;"> 
 
Test field: <input type="text" name="test"><br> 
 
<button type="submit" value="Submit" onclick="alert('it works!');">Submit</button> 
 
<button type="reset" value="Reset">Reset</button> 
 
</form>

Обратите внимание, что это деталь реализации браузера. Я не знаю ни одного браузера, в котором это не сработает, но в то же время я не могу гарантировать, что он будет работать в любом браузере и на любой платформе.

+0

Не могу этого сделать, поскольку я пытаюсь избежать перезагрузки страницы. – zagpoint

+0

Вы можете предотвратить перезагрузку страницы с помощью JavaScript в событии onsubmit формы. С дополнительным преимуществом, что вы можете получить перезагрузку страницы в среде, отличной от javascript, вам следует позаботиться об этом. – GolezTrol

+0

Заботьтесь о разработке немного (желательно с некоторым примером кода ;-) о том, как создать прослушиватель onsubmit(), чтобы предотвратить перезагрузку страницы? – zagpoint

-1

Вы должны использовать

<button onclick="myFunction()"> 
    <script> 
    function myFunction() { 
     document.getElementById("field2").value = document.getElementById("field1").value; 
    } 
</script> 
0

Смените $('#searchbutton').click(); в $('#searchbutton').trigger('click');

+0

К сожалению, это тоже не изменяет поведение - поиска по-прежнему не происходит. – zagpoint

0

Модифицированный код @GolezTrol так что OnChange слушателя на поле ввода текста косвенно вызывает щелчок кнопки поиска.

<form action="" method="get"> 
 
    Test field: 
 
    <input type="text" name="test" onChange="aliasonclick"> 
 
    <br> 
 
    <button name="searchbutton" id="clickthis" onclick="alert('it works!');">Submit</button> 
 
    <button type="reset" value="Reset">Reset</button> 
 
</form> 
 

 
<script> 
 
    function aliasonclick() { 
 
    var searchbutton = document.getElementById("clickthis") 
 
    searchbutton.click() 
 
    } 
 
</script>

+0

Вы протестировали это? Фрагмент не работает. – GolezTrol

+0

Yep работает для меня в браузере Chrome. Всякий раз, когда я выбираю текстовое поле и нажимаю Enter, я получаю диалоговое окно предупреждения. –

+0

ОК. Работает сейчас. Если вы это сделаете, вы можете полностью удалить тег формы, что приятно, так как OP не хочет создавать что-либо в любом случае. – GolezTrol