2013-07-02 3 views
0

숫자 만 허용하는 텍스트 필드가 있습니다. 사용자가 문자를 입력하고 textfield에서 나가면 onchange를 사용하여 사용자가 숫자 또는 문자를 입력했는지 확인하고 있습니다. 그래서 사용자가 onchange를 사용하여 탭을 누르면 값이 확인됩니다. 사용자가 Enter 버튼을 누르면 IE가 이것을 지원하므로 window.event.keycode =9;으로 설정됩니다. 다른 브라우저에서도 작동되도록하려면 사용자가 Enter 버튼을 누를 때마다 포커스를 이동시키는 논리를 작성했습니다.Firefox에서 버튼 입력 문제

제가 직면 한 문제는 Firefox에서 텍스트 필드에 사용자가 버튼을 누르면 onchange이 호출되고 onsubmit도 호출되어 내 페이지를 다시 새로 고칩니다. 초점을 다음 항목으로 이동시키기 위해 작성한 논리도 작동합니다. 하지만 이유는 모르겠다. onchangeonsubmit이 호출된다. 이 프로젝트는 엄청난 양의 코드로 구성되어있어서 코드 조각을 게시 할 수 없습니다. 왜 이런 식으로 작동하는지 알고 싶습니다.

+0

...? – imulsion

+1

내 chrystal ball은 다음과 같이 말합니다 :'ENTER'를 눌렀다면 유효성 검사 기능에'event.preventDefault()'를 추가하십시오. – Teemu

+0

안녕하십니까. IE 및 Firefox에서도 확인하십시오. http://jsfiddle.net/hQ86t/1/ – Cyril

답변

0

일부 브라우저에는 전역 이벤트 객체가 있고 다른 객체에는 이벤트 객체를 매개 변수로 이벤트 처리기로 보냅니다. Chrome 및 Internet Exlporer은 이전 버전을 사용하고 Firefox는 후자를 사용합니다.

일부 브라우저는 keyCode를 사용하고 다른 브라우저는 charCode를 사용합니다.

는 키 코드 13

+0

Firefox와 IE에서이 동작을 확인하십시오. http://jsfiddle.net/hQ86t/1/ – Cyril

+0

아래 코드를 시도하십시오. – Jaimin

+0

어느 쪽이 좋습니까? 링크를 찾을 수 없습니다. – Cyril

0
function Numberonly() { 

       var reg = /^((\d{1,8}(\.\d{0,5})?%)|(\d{1,8}(\.\d{0,5})?))$/; 

       if (!reg.test(($("#txtunitId").val()))) { 
        $("#txtunitId").val(''); 
        return false; 
       } 
      } 


<input type="text" id="txtunitId" style="float: left;" onkeyup="Numberonly();" /> 

jsfiddle.net/hQ86t/20입니다 입력

우리가 코드를 볼 수없는 경우 우리가 할 수있는 방법을 우리가 심령하지
+0

실제로 이러한 논리는 onchange에 이미 기록되어 있습니다. 나는 keydown 또는 keyup에 그것을 쓰고 싶지 않다. – Cyril

+0

문제는 FF가 입력 자체를 검증 할 때 입력을 누를 때 양식을 제출한다는 것이다. – Teemu

+0

그래서 Enter 키가 눌러 졌을 때 흐름을 차단하는 것입니다. 그래서 onchange도 성공적으로 작동 할 것입니다. 나는 맞습니까 Teemu? – Cyril

관련 문제