在IE8中,JQuery单击触发器触发两次

时间:2014-07-15 22:20:13

标签: jquery internet-explorer-8

仅在IE8中发生这种情况。它适用于Firefox,Chrome和IE11

当我在输入框中按Enter键时,将调用addToCart方法两次。但如果我点击按钮,它只会被调用一次。请帮助。

在按Enter键时,只调用一次validateInput方法。

我尝试使用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 个答案:

答案 0 :(得分:3)

添加event.preventDefault解决了它。

if (event.keyCode == '13') {
   event.preventDefault();
   $(this).trigger("blur");
   $('#addBtn_'+skunum).trigger("click");
 }  
}