자바스크립트를 사용하여 필드를 건너뛰는 방법은 무엇입니까?
-
09-06-2019 - |
문제
다음과 같은 형식이 있습니다.
<form name="mine">
<input type=text name=one>
<input type=text name=two>
<input type=text name=three>
</form>
사용자가 '1'에 값을 입력할 때 입력한 내용에 따라 '2' 필드를 건너뛰고 싶을 때가 있습니다.예를 들어, 사용자가 '123'을 입력하고 Tab을 사용하여 다음 필드로 이동하는 경우 이를 건너뛰고 필드 3으로 이동하고 싶습니다.
사용해 보았습니다 OnBlur
그리고 OnEnter
, 성공없이.
1번을 시도해보세요:
<form name="mine">
<input type=text name=one onBlur="if (document.mine.one.value='123') document.three.focus();>
<input type=text name=two>
<input type=text name=three>
</form>
2번 시도:
<form name="mine">
<input type=text name=one>
<input type=text name=two onEnter="if (document.mine.one.value='123') document.three.focus();>
<input type=text name=three>
</form>
하지만 이들 중 어느 것도 작동하지 않습니다.브라우저에서는 포커스가 변경되는 동안 포커스를 조작하는 것을 허용하지 않는 것 같습니다.
그런데 이 모든 것은 Linux의 Firefox에서 시도되었습니다.
해결책
요소에 tabindex 속성을 첨부한 다음 프로그래밍 방식으로 시도해 보십시오(javaScript에서 변경).
<INPUT tabindex="3" type="submit" name="mySubmit">
다른 팁
당신은 집중하다 포커스를 받을 때 호출되는 필드 2의 이벤트입니다.이 시점에서 필드 1의 값이 업데이트되어야 하며 그때 확인을 수행할 수 있습니다.
설명하는 방법을 사용하고 제대로 작동했다면 사용자가 필드를 탭하는 대신 필드를 클릭할 때 포커스도 변경됩니다.이로 인해 사용자가 실망하게 될 것이라고 장담할 수 있습니다.(정확히 작동하지 않는 이유는 나에게 달려 있지 않습니다.)
대신, 앞서 말했듯이 필드 1의 내용이 변경되는 즉시 해당 필드의 tabindex를 변경하십시오.
<form name="mine">
<input type="text" name="one" onkeypress="if (mine.one.value == '123') mine.three.focus();" />
<input type="text" name="two">
<input type="text" name="three">
</form>
노력하다 onkeypress
대신에 onblur
.또한, onfocus
필드 2는 3으로 보내야 하는 곳입니다.나는 하나가 123이면 그들이 2를 입력하는 것을 원하지 않는다고 가정하고 있으므로 2에서 확인할 수 있습니다. onfocus
그리고 3명에게 보내세요.