javascript函数preventdefault问题

时间:2013-04-25 07:25:19

标签: javascript

我有以下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
    }   
}
}

2 个答案:

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

}