2012-08-03 3 views
0
의 두 번째 작동하지

/I는 HTML에서 두 개의 입력 상자, 별도의 양식 요소 세트의 각,이 :에서는 event.preventDefault()는 두 개의 입력 상자

<input id="RecommendationDaysInputTextBox" class="NumberOfDaysInputTextBox" name="RecommendationDaysInputTextBox" type="text" value="90" /> 
<input id="ReviewDaysInputTextBox" class="NumberOfDaysInputTextBox" name="ReviewDaysInputTextBox" type="text" value="360" /> 

내가 따라 기본 스톤 전파를 중지하려면를 사용자가 데이터를 입력 한 후 엔터 키를 치는 경우 ("변경"및 "키 업"으로 수정). 내가 이것을 사용하고

:

$(".NumberOfDaysInputTextBox").keyup(function(e) { 
    if (e.which == 13) { 
     e.preventDefault(); 
     /* e.stopPropagation(); */ 
     $(this).trigger("change"); 
    } 
});​ 

그것은 첫 번째 상자가 아닌 초에 노력하고 있습니다. 두 번째 입력을 누르면 게시가 새로 고침됩니다 (모든 브라우저). 이것은 상자에 데이터를 입력하고 Enter 키를 누르는 순서에 관계없이 발생합니다.

내가 뭘 잘못하고 어떻게 올바르게 수행 할 수 있는지에 대한 설명이있는 사람이 있습니까?

+0

모든 것이 정상적으로 보입니다. 이벤트 구독 직전에'alert ($ ("NumberOfDaysInputTextBox").). length를 시도해보십시오. – kirilloid

+0

http://jsfiddle.net에서 문제를 게시하면 다른 사람들이 당신을 도울 가능성이 높아집니다. –

+0

'$ ('. myForm.'). submit (function (e) {e.preventDefault});'. 'keyup' 이벤트 리스너를 유지할 수는 있지만 키 코드와 그 모든 것에 대해 걱정할 필요는 없습니다. – Madbreaks

답변

3

문제는 keydown에서 제출이 즉시 트리거된다는 것입니다. keydown에서 실행할 함수를 대신 설정하면 ...

$(".NumberOfDaysInputTextBox").keydown(function(e) 
{ 
    if (e.which == 13) 
    { 
     e.preventDefault(); 
     e.stopPropagation(); 
     $(this).trigger("change"); 
    } 
});​ 

... 문제가 해결되는 것 같습니다. 이미 그 시점하여 기본 동작을 트리거 이후

여기, 바이올린 http://jsfiddle.net/jthGY/

+1

정확합니다 (http://www.quirksmode.org/dom/events/keys.html). – Gromer

+0

감사합니다. keypown에 e.preventDefault()를 넣고 keyup에서 "변경"트리거를 사용하면 완벽 해집니다. 나는 또한 원래 질문에 대한 언급에서 언급 된 "제출"기술을 시도 할 것이다. 승자와 코드 같은데. –

+0

문제는 없습니다. 링크에 대한 고마워 Gromer, 시도했지만, 부족한 시간, 그것을 찾지 못했습니다;) – banzomaikaka

관련 문제