2011-12-02 7 views
2

텍스트 상자에 필수 값이없는 경우 다시 초점을 맞추고 있습니다. 텍스트 상자는이 기능을 실행 한 후에 다시 초점을 맞추지 않습니다. 그러나 (alert("Must be 1");) 올바르게 경고하고 있습니다.필요한 값이없는 경우 포커스가있는 텍스트 상자에 포커스를 다시 넣으십시오.

$("#textbox").blur(function(event){ 
     if ($(this).text != "1"){ 
      event.preventDefault(); 
      alert("Must be 1"); 
      $(this).focus(); 
     } 
}); 

어떤 아이디어가 있습니까?

답변

2

당신은이 작업을 수행 할 수 있습니다 :

$("#textbox").blur(function(event){ 
     var tb = this; 
     if ($(this).val() != "1"){ 
      event.preventDefault(); 
      alert("Must be 1"); 
      setTimeout(function() { $(tb).focus(); }, 1); 
     } 
}); 

을 ".focus()"제한 시간에 전화를 넣어하면 스위치가 별도의 이벤트 루프에서 발생합니다. 또한 값을 잘못 얻으려는 시도 (".text") 및 "tb"의 요소에 대한 참조를 보존해야한다는 점에 유의하십시오.

Safari에서 작동하지 않을 수도 있습니다. 사파리가 인데 실제로은 ".focus()"호출에 따르기를 꺼리고 "alert()"로 혼란스러워합니다. 물론 다른 방법으로 사용자에게 메시지를 전달하면 (그리고 그렇게하십시오 .--) 그렇게하면 작동 할 수 있습니다.

관련 문제