仅在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");
}
答案 0 :(得分:3)
添加event.preventDefault解决了它。
if (event.keyCode == '13') {
event.preventDefault();
$(this).trigger("blur");
$('#addBtn_'+skunum).trigger("click");
}
}