jquery live Preventdefault не удается на входных элементах
-
28-09-2019 - |
Вопрос
У меня есть следующий фрагмент кода:
$('#messages input').live('keydown', function(e){
if(e.keyCode == 13) {
alert($(this).attr('value'));
e.preventDefault();
return false;
}
});
где «ввод #message», очевидно, группа входных текстовых элементов. Я хочу поймать ключ «Enter» и предотвратить его освежающую страницу. Тем не менее, это терпит неудачу каждый раз. Предупреждение работает нормально, но кажется, что PreventDefault () не работает.
У кого-нибудь есть идеи?
Редактировать: Я должен был упомянуть, что я работаю в ASP.NET, и он внутри элемента формы. Удаление его из элемента формы решает проблему, но я хотел бы знать, почему PrevieDEfault () не работает.
Решение 2
По иронии судьбы, это был сам оповещение, что вызывает проблему.
AFAICT, предупреждение остановит выполнение JavaScript до того, как PreventDefault () может вступить в силу, но браузер продолжал обработку нажатия клавиши, запускает представление формы.
Странно, но там у вас есть.
Другие советы
Может попробовать
e.stopPropagation()
$('#form_deal_step1').live('submit',function(){
$('.column .column_child select').not(':hidden').each(function(ev){
if($(this).val()=='?')
{
alert('Please select the ages of each child.');
ev.preventDefault();
return false;
}
});
})
var age_selected=1;
$('.column .column_child select').not(':hidden').each(function(){
if($(this).val()=='?')
{
age_selected=0;
}
});
if(age_selected==0)
{
alert('Please select the ages of each child.');
return false;
}
Я думаю, что формы представлены на keypress
, не на keydown
. Отказ Пытаться
$('#messages input').live('keypress', function(e){
if(e.keyCode == 13) {
alert($(this).attr('value'));
e.preventDefault();
return false;
}
});
Насколько я знаю, обновление страницы - это функция по умолчанию формы, а не кнопку ввода, и, как таковая, вы должны предотвращать по умолчанию в форме, а не в входе.
Что-то вдоль линий:
$('#target').submit(function() {
return false;
});