Триггер клика JQuery срабатывает дважды в IE8

Это происходит только в IE8. Работает в Firefox, Chrome и IE11.

Когда я нажимаю ввод в поле ввода, метод addToCart вызывается дважды. Но если я нажимаю на кнопку, она вызывается только один раз. Пожалуйста, помогите.

Метод validateInput вызывается только один раз при нажатии Enter.

Я пробовал triggerHandler, но он запускает addToCart на неправильном (первом) элементе. Выкл / вкл, unbind / bind не помог.

Html:

<input id="quantity_225300" class="quantity numberinput" type="number">
<label class="sr-only" for="quantity_225300">Label Text</label>
<button id="addBtn_225300" class="addToCartBtn btn btn-mini" style="vertical-align: top;" disabled="">Add</button>

JavaScript

$(document).ready(function() {
  $(document).on("click", ".addToCartBtn", addToCart);
  $(document).on("blur", "input.quantity", validateInput);
  $(document).on("keydown", "input.quantity", checkAndSubmitForEnterKey);
});

function checkAndSubmitForEnterKey(event){
var index = $(this).attr('id').lastIndexOf("_");
var skunum = $(this).attr('id')
        .substr(index + 1, $(this).attr('id').length);
if (event.keyCode == '13') {
    $(this).trigger("blur");
    $('#addBtn_'+skunum).trigger("click");
 }  
}

var addToCart = function() {
log.debug("add to cart");
}

var validateInput = function() {
 log.debug("validated");
}

1 ответ

Добавление event.preventDefault решило эту проблему.

if (event.keyCode == '13') {
   event.preventDefault();
   $(this).trigger("blur");
   $('#addBtn_'+skunum).trigger("click");
 }  
}
Другие вопросы по тегам