jquery live Preventdefault не удается на входных элементах

StackOverflow https://stackoverflow.com/questions/3885953

  •  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;
});
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top