2013-04-25 6 views
1

아래 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

'event.preventDefault()'대신'return false'를 사용해보십시오. – 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()를 호출하면 모든 것이 잘되어야합니다. 그 함수에서 원하는 itemid를 얻을 수있는 방법을 찾아야합니다.