Имитация щелчка для отправки формы в jQuery

#javascript #jquery #internet-explorer

#javascript #jquery — jquery — запрос #internet-проводник #jquery #internet-explorer

Вопрос:

Итак, у меня есть текстовое поле, в котором будет отсканирован штрих-код в указанное текстовое поле. Он выполнит поиск по базе данных и вернет информацию в виде кнопки отправки. Я использую этот код для имитации нажатия на кнопку отправки.

 if($.browser.msie){
//simulate a click on the button
    $("#search").keyup(function (e) {
        if(e.keyCode == 13) {
          $('input:submit').click();
        }
     });
}
  

Проблема с этим кодом заключается в том, что он принимает все нажатия клавиш, а затем нажимает на кнопку так много раз. Эта отправка будет представлять данные, которые будут записаны в базу данных, поэтому, если бы штрих-код был abc123, это действие было бы выполнено 6 раз, но мне нужно, чтобы это было сделано только один раз. Как мне это исправить? Мой код работает в FF и Chrome, но не в IE, в котором мне нужно заставить это работать. Гррр, я так сильно ненавижу IE!

Комментарии:

1. Не должен ли браузер отправлять форму при вводе по умолчанию, без какого-либо дополнительного JavaScript?

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

3. Я тоже так думал, но по какой-то причине это не работает в IE, вероятно, потому, что IE отстой, но я не могу сказать наверняка 😉

4. Как это будет выполняться 6 раз? Вы уверены, что вы не кэшируетесь с другим файлом без проверки ключа ввода.

5. @epascarello: Если бы я был кэширован с другим файлом, разве я не увидел бы те же результаты в FF и Chrome?

Ответ №1:

Зачем вам нужно «нажимать» на эту кнопку отправки? Почему бы вам просто не отправить форму следующим образом:

 $("#search").blur(function(){
   document.myform.submit();
});
  

Ваш считыватель штрих-кодов сделает это за вас.

Комментарии:

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

Ответ №2:

Попробуйте получить код, подобный этому:

 var keyCode = (window.event) ? e.which : e.keyCode;