2011-09-24 6 views
1

이 기능에 문제가 있습니다. 나는 제대로 발사 할 수 없다. 그것은 작동하지만 양식의 수량을 강조 표시하고 값을 변경하면 (처음 값은 1로 설정 됨), 재고 수준은 20이며, 21을 입력하면 다른 키를 누르지 않으면 메시지가 표시되지 않습니다 . 내가 도대체 ​​뭘 잘못하고있는 겁니까? 나는 가능한 모든 사건을 시험해 보았고 내가 뭘 잘못하고 있는지 알아 내지 못한다. BTW, 이것은 jQuery UI 대화 상자에 있습니다."keypress"이벤트 처리기가 일관되게 실행되지 않는 이유는 무엇입니까?

$('#qty').live('keypress', function() { 
    $('#response').hide(); 
    if($('#qty').val() > stockLevel) { 
    var response = 'You selected more than we have in stock, we have reset your quantity to the maximum number available in stock'; 
    $('#qty').val(stockLevel); 
    $('#response').html(response).show('blind', {}, '200'); 
    return false; 
} 
}); 

도움 주셔서 감사합니다.

+0

키 누르기 대신 키 입력을 시도 했습니까? –

+0

아마도 이것은 단지 예일뿐입니다. 그러나 이런 종류의 유효성 검사는 서버 측에서 발생해야합니다. –

+2

주문을 제출할 때 서버에서 다시 확인하겠습니다. 그러나 오류가 발생하기 전에 많은 오류를 제거하고보다 부드러운 사용자 경험을 제공하고 싶습니다. – dragboatrandy

답변

1

keypress 이벤트는 모든 표준에서 정의되지 않았기 때문에 악명이 일치하지 않습니다. 브라우저에서 텍스트를 텍스트 상자에 넣기 전에 이벤트가 발생합니다. 대신 keyup 이벤트를 사용하십시오.

+0

키드 시도가 더 나은 결과를 얻은 것으로 보입니다. 유일한 것은, stockLevel의 가치를 말하는 것은 20입니다, 내가 수량 상자를 지우고 3을 입력하면 메시지가 표시됩니까? 이상한? 또한 서버 측에서 다시 확인하되 제출하기 전에 미리 많은 문제를 제거하고 싶습니다. – dragboatrandy

+0

stockLevel의 값을 정수로 변환해야합니까? – dragboatrandy

+0

내가 알아 냈다고 생각해. 사용자 parseFloat (stockLevel) 그리고 그 결과가 완벽하게 작동하는 것 같았다. – dragboatrandy

관련 문제