Предотвращение отправки формы Enter в Safari

#javascript #jquery #safari

#javascript #jquery #safari

Вопрос:

У меня на моей странице есть следующий код:

 $('form.enter-doesnt-submit').submit(function () {
    console.log($(document.activeElement));
    if($(document.activeElement).attr('type') == 'submit') {
        console.log
        return true;
    } else {
        console.log("Prevented enter from submitting the form.");
        return false;
    }
});
  

Который, я совершенно уверен, я получил от stackoverflow давным-давно. Это работает нормально, просто не в Safari. Причина в том, что когда я выхожу из системы, document.activeElement он выдает мне всю страницу, поэтому, конечно, тип атрибута не submit и, следовательно, форма не отправляется, даже когда вы нажимаете кнопку отправки.

Мне нужно иметь возможность запретить отправку ввода в моей форме, потому что это онлайн-тесты, и если пользователь пишет ответ и случайно нажимает enter до заполнения формы, то они помечены неправильно, поскольку на самом деле они не завершили тест.

Кто-нибудь может мне помочь каким-либо способом предотвратить нажатие enter в Safari?

Ответ №1:

Хорошо, я решил это, подойдя к этому другим способом, вместо этого ориентируясь на входные данные в форме:

 $('form.enter-doesnt-submit input[type=text]').keypress(function (e) {
    if(e.keyCode == 13) {
        e.preventDefault()
    }
});
  

Нажатие enter в текстовой области по умолчанию не отправляет форму, поэтому необходимо предотвратить только вводимые данные. Теперь моя кнопка отправки работает в safari и в Chrome.