Как сделать запись нажатием клавиши?
На моей HTML-странице у меня было текстовое поле для ввода пользователем ключевого слова для поиска. Когда они нажимают кнопку поиска, функция JavaScript генерирует URL и запускается в новом окне.
Функция JavaScript работает правильно, когда пользователь щелкает мышью по кнопке поиска, но при нажатии клавиши ВВОД ответа нет.
function searching(){
var keywordsStr = document.getElementById('keywords').value;
var cmd ="http://XXX/advancedsearch_result.asp?language=ENG&+"+ encodeURI(keywordsStr) + "&x=11&y=4";
window.location = cmd;
}
<form name="form1" method="get">
<input name="keywords" type="text" id="keywords" size="50" >
<input type="submit" name="btn_search" id="btn_search" value="Search"
onClick="javascript:searching(); return false;" onKeyPress="javascript:searching(); return false;">
<input type="reset" name="btn_reset" id="btn_reset" value="Reset">
</form>
Ответы
Ответ 1
Формальный подход
Как говорит scoota269, вы должны использовать onSubmit
вместо этого, потому что нажатие enter в текстовом поле будет наиболее похоже на запуск формы (если внутри формы)
<form action="#" onsubmit="handle">
<input type="text" name="txt" />
</form>
<script>
function handle(e){
e.preventDefault(); // Otherwise the form will be submitted
alert("FORM WAS SUBMITTED");
}
</script>
Подход текстового поля
Если вы хотите иметь событие в поле ввода, вам нужно убедиться, что ваш handle()
вернет значение false, иначе форма будет отправлена.
<form action="#">
<input type="text" name="txt" onkeypress="handle(event)" />
</form>
<script>
function handle(e){
if(e.keyCode === 13){
e.preventDefault(); // Ensure it is only this code that rusn
alert("Enter was pressed was presses");
}
}
</script>
Ответ 2
Используйте onkeypress
. Проверьте, нажата ли нажатая клавиша (keyCode = 13). если да, вызовите функцию searching()
.
HTML
<input name="keywords" type="text" id="keywords" size="50" onkeypress="handleKeyPress(event)">
JAVASCRIPT
function handleKeyPress(e){
var key=e.keyCode || e.which;
if (key==13){
searching();
}
}
Вот фрагмент, показывающий его в действии:
document.getElementById("msg1").innerHTML = "Default";
function handle(e){
document.getElementById("msg1").innerHTML = "Trigger";
var key=e.keyCode || e.which;
if (key==13){
document.getElementById("msg1").innerHTML = "HELLO!";
}
}
<input type="text" name="box22" value="please" onkeypress="handle(event)"/>
<div id="msg1"></div>
Ответ 3
Попробуйте это....
HTML встроенный
onKeydown="Javascript: if (event.keyCode==13) fnsearch();"
or
onkeypress="Javascript: if (event.keyCode==13) fnsearch();"
JavaScript
<script>
function fnsearch()
{
alert('you press enter');
}
</script>
Ответ 4
Вы можете использовать javascript
ctl.attachEvent('onkeydown', function(event) {
try {
if (event.keyCode == 13) {
FieldValueChanged(ctl.id, ctl.value);
}
false;
} catch (e) { };
return true
})
Ответ 5
Маленький бит общего jQuery для вас.
$('div.search-box input[type=text]').on('keydown', function (e) {
if (e.which == 13) {
$(this).parent().find('input[type=submit]').trigger('click');
return false;
}
});
Это работает на том основании, что кнопка textbox и submit завернута в один div. работает с несколькими полями поиска на странице
Ответ 6
Используйте атрибут onsubmit в теге формы, а не onclick в submit.
Ответ 7
Вам нужно создать обработчик для действия onkeypress
.
HTML
<input name="keywords" type="text" id="keywords" size="50" onkeypress="handleEnter(this, event)" />
JS
function handleEnter(inField, e)
{
var charCode;
//Get key code (support for all browsers)
if(e && e.which)
{
charCode = e.which;
}
else if(window.event)
{
e = window.event;
charCode = e.keyCode;
}
if(charCode == 13)
{
//Call your submit function
}
}
Ответ 8
Легко, как лизать мороженое, давайте предположим:
ваша страница:
<body>
ваша страница сейчас:
<body onkeypress=if(event.keyCode==13)alert('hi')>
Это пример такой простой, как есть; Im, предположим, что у вас есть страница с тегом обычного тега, и если вы вставляете эту функцию onkeypress, которая работает сама по себе, это означает, что каждый раз, когда вы нажимаете кнопку ENTER, всплывающее предупреждение появляется [использовать что-либо после .keyCode == 13)]
Итак, замените тег BODY на этот и нажмите ENTER для тестирования, вы увидите, что он работает
Ответ 9
// jquery press check by Abdelhamed Mohamed
$(document).ready(function(){
$("textarea").keydown(function(event){
if (event.keyCode == 13) {
// do something here
alert("You Pres Enter");
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<textarea></textarea>
Ответ 10
Используйте event.key
вместо event.keyCode
!
function onEvent(event) {
if (event.key === "Enter") {
// Submit form
}
};
Документы Mozilla
Поддерживаемые браузеры
Ответ 11
<form action="#">
<input type="text" id="txtBox" name="txt" onkeypress="handle" />
</form>
<script>
$("#txtBox").keypress(function (e) {
if (e.keyCode === 13) {
alert("Enter was pressed was presses");
}
return false;
});
</script>
Ответ 12
Это простой ответ в стиле ES-6. Для ввода нажатия клавиши "enter" и выполнения какой-либо функции
<input
onPressEnter={e => (e.keyCode === 13) && someFunc()}
/>
Ответ 13
Устаревший Согласно MDN
Эта функция удалена из веб-стандартов. Хотя некоторые браузеры все еще могут его поддерживать, он находится в процессе отбрасывания. Избегайте его использования и, если возможно, обновите существующий код; см. таблицу совместимости в нижней части этой страницы, чтобы определить ваше решение. Имейте в виду, что эта функция может перестать работать в любое время.
Однако, если вы действительно хотите использовать это и нуждаетесь в значении, перейдите к http://keycode.info/