Ответ 1
Попробуйте следующее:
$('#myText').live("keypress", function(e) {
if (e.keyCode == 13) {
alert("Enter pressed");
return false; // prevent the button click from happening
}
});
Я пытаюсь получить ключ Enter, чтобы вызвать функцию, когда она нажата, когда внутри определенного текстового поля, а не запускать первую или по умолчанию кнопку.
Вы можете увидеть пример того, что здесь происходит: http://jsfiddle.net/cutsomeat/WZ6TM/1/
Если вы нажмете другие клавиши, вы получите окно с кодом ключа, но если вы нажмете клавишу Enter, вы не получите окно с кодом ключа, а скорее поле предупреждения в событии нажатия кнопки.
Очевидно, клавиша Enter вызывает кнопку. Есть ли способ избежать этого и вместо этого захватить клавишу Enter в событии keyup, затем запустить другую функцию?
Попробуйте следующее:
$('#myText').live("keypress", function(e) {
if (e.keyCode == 13) {
alert("Enter pressed");
return false; // prevent the button click from happening
}
});
Используйте .on()
, поскольку .live()
был устарел.
$(document).on("keypress", ".myText", function(e) {
if (e.which == 13) {
//do some stuff
}
});
Сделайте e.preventDefault()
в keyDown, чтобы избежать действия по умолчанию кнопки:
$('#myText').keydown(function(e) {
if (e.keyCode == 13) {
e.preventDefault();
}
alert(e.keyCode);
});
$(document).ready(function() {
$('#myText').keypress(function(e) {
if ( e.keyCode == 13 ) { // detect the enter key
$('#myButton').click(); // fire a sample click, you can do anything
}
});
$('#myButton').click(function(e) {
alert('Button click activated!');
});
});
Для живых элементов используйте .on()
, как показано ниже:
$(document).ready(function() {
$(document).on('keypress', '#myText', function(e) {
if ( e.keyCode == 13 ) { // detect the enter key
$('#myButton').click(); // fire a sample click, you can do anything
}
});
$(document).on('click', '#myButton', function(e) {
alert('Button click activated!');
});
});