2013-04-25 2 views
1

У меня есть проблема с javascript preventdefault. Я не очень хорошо разбираюсь в javascript, но это мой код. event.preventDefault не работает, однако если я заменю на alert("SOMETEXT"), он отобразит предупреждение.javascript function preventdefault issue

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

+1

Попробуйте использовать 'return false', а не' event.preventDefault() '. – ravisolanki07

ответ

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() на этом, все должно быть хорошо. Чем вы должны выяснить, как получить нужный элемент в этой функции.