#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;