2012-02-21 3 views
1

정말 이상한 문제가 있습니다. 여기에 내 현재 자바 스크립트입니다 : 내가 이것을 사용하면입력 값을 설정하기 전에 입력 내용의 유효성을 검사하려면 어떻게합니까?

jQuery('.highlightableTDCell input').keydown(function() { 
    var val = jQuery(this).val(); 
    if (!GridView.prototype.validateStandardCellNumberFormat(val)) { 
     return false; 
    } 
    else return true; 
}); 

, 난 여전히 잘못된 문자 입력과 도망,하지만 그것보다 더 이상 할 수 있습니다. 나는 이것이 처음에 일어날 것이라고 생각했기 때문에 정말로 혼란 스럽다.

+1

팁 얻을 jQuery object를 만들 필요가 없습니다 :'this.value' ==는 'jQuery를 (이) .val()'더는 없다 값을 얻으려면 jQuery 객체를 만들어야한다. – gdoron

+1

나는 당신의 실제 질문에 관해서 정말로 혼란 스럽다. "나는 이것이 먼저 일어날 것이라고 생각 했단 말인가?" – Purag

답변

1

keydown 이벤트의 내부에서 element.value가 아직 눌려지고있는 키를 설명하기 위해 아직 업데이트되지 않았습니다. 키가 입력 상자를 누르는 것을 중지하려면 해당 이벤트를 조사하여 허용 할 키인지 확인해야합니다. 새로운 내용이 입력을 입력하기 전에

0

이벤트가 발생

당신은 새로운 콘텐츠를 얻기 위해이 같은 것을 사용할 수 있습니다 (기본 비헤이비어를 취소시키는합니다.) :

$('.highlightableTDCell input').keypress(function(e){ 
    var temp = this.value + String.fromCharCode(e.which) 

    return GridView.prototype.validateStandardCellNumberFormat(temp) 
}); 

주를이 그것은 완전한 증거가 아닙니다. 사용자가 입력 중간에 새 문자를 입력 한 경우와 같습니다.

유효성 확인은 blur에서만 수행해야합니다. HTML5를 사용하면 더 좋을 것입니다. 그러나 모든 브라우저가 아직 HTML5를 지원하지는 않습니다.

  • 팁 : this.value == jQuery(this).val() 값을
관련 문제