Отправить форму с помощью Enter - Невозможно выбрать ранее введенное значение с помощью клавиш со стрелками + Enter - PullRequest
0 голосов
/ 26 сентября 2011

Я использую простой JavaScript для отправки формы при нажатии клавиши Enter:

$("input").keypress(function (e) {
    if (e.which == 13) {
        $(this).closest("form").submit();
        return false;
    }
});

Теперь есть проблема с этим.
Браузеры запоминают, что вы ввели в текстовые поляраньше.

Итак, допустим, я выбрал что-то из «автозаполнения».Я нажал клавишу со стрелкой вниз и нажал ввод, желая выбрать ранее введенное значение.Затем формы очевидно отправляются из-за события нажатия клавиши.

Есть ли способ решить эту проблему?

1 Ответ

1 голос
/ 26 сентября 2011

Событие нажатия клавиши происходит до того, как браузер заполняет поле ввода. Следите за тем, что находится в поле, прежде чем пользователь нажмет Enter, и вы сможете определить, изменилось ли значение каким-либо иным способом, кроме нажатия клавиши. Не будет отправлено, если пользователь нажмет Enter, чтобы выбрать автоматически заполненное значение.

Это работает как минимум в FF и Chrome:

var typed = "";
$(document).ready(function(){
  $("#input-field").keypress(function (e) {
    if (e.which == 13) {        
      if($("#input-field").val() != typed) {
        $(this).closest("form").submit();
        //alert($("#input-field").val());
        return false 
      }
    }
    typed = $("#input-field").val();
  });
});
...