我有以下javascript preventdefault问题。
我不是很擅长javascript,但这就是我的代码。
event.preventDefault
无效,但如果我替换为alert("SOMETEXT")
,则会显示警告。
function changecartitemquantitykeydown(itemid,event) {
// Allow: backspace, delete, tab, escape, and enter
if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 ||
// Allow: Ctrl+A
(event.keyCode == 65 && event.ctrlKey === true) ||
// Allow: home, end, left, right
(event.keyCode >= 35 && event.keyCode <= 39)) {
// let it happen, don't do anything
return;
}
else {
// Ensure that it is a number and stop the keypress
if ((event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) || (this.value.length == 0 && event.keyCode == 48)) {
event.preventDefault(); <===== This is not happening
}
}
}
答案 0 :(得分:0)
我认为你的问题在于你在'changecartitemquantitykeydown'这个函数中有多个参数。如果这是事件回调函数,那么第一个参数应该是事件。如果你在那上面调用preventDefault(),一切都应该没问题。你应该想办法在这个函数中找到你想要的itemid。
答案 1 :(得分:0)
我用过它并且有效。
function changecartitemquantitykeydown(event) {
// Allow: backspace, delete, tab, escape, and enter
if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 ||
// Allow: Ctrl+A
(event.keyCode == 65 && event.ctrlKey === true) ||
// Allow: home, end, left, right
(event.keyCode >= 35 && event.keyCode <= 39)) {
// let it happen, don't do anything
return;
}
else {
// Ensure that it is a number and stop the keypress
if ((event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) || (this.value.length == 0 && event.keyCode == 48)) {
//cancelDefaultAction(event);
var evt = event ? event:window.event;
if (evt.preventDefault) {
evt.preventDefault();
}
evt.returnValue = false;
return false;
}
}
}