2013-04-25 83 views
1

我有下面的javascript防止默认问题。 我不是很擅长JavaScript,但这是我的代码。 event.preventDefault不起作用,但是如果我替换为alert("SOMETEXT"),它会显示警报。javascript功能防止默认问题

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 
    } 
} 
} 
+3

你如何调用该函数?看起来应该只有一个参数 – Bergi 2013-04-25 07:29:00

+1

尝试使用'return false'而不是'event.preventDefault()'。 – ravisolanki07 2013-04-25 07:36:56

回答

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

}

0

我认为你的问题在于你在函数'changecartitemquantitykeydown'中有多个参数。如果这是事件回调函数,那么第一个参数应该是事件。如果你打电话给preventDefault(),一切都应该没问题。比你应该找出一种方法来获取你想要在该功能中的itemid。