2009-04-21 3 views
5

문제를jQuery를 UI 대화 + ASP.NET의 텍스트 상자 + 내가 어떤 ASP.NET의 텍스트 상자와 대화 상자와 그 안에 버튼을 보여 jQuery를 UI 대화 상자를 사용하고

초점을 맞 춥니 다. 그러나 jQuery가 양식 외부의 대화 상자에서 div를 움직이면 양식을 직접 다시 이동해야합니다 (자세한 내용은 this 참조). 그러면 ASP.NET이 여전히 작동합니다. 이 이동으로 인해 문제가 발생합니다. 전화가 걸려도 필드가 포커스를 얻지 못합니다.

아래 샘플을 보면 선 B로 표시된 선이 초점을 설정해야하지만 선 A로 표시된 선은이를 구분합니다. 제가 A 라인을 주석 처리하면 작동합니다. 내가 B 행을 이동하기 전에 (대화 상자, 선 A 등 전에) 여전히 포커스를 설정하지 못합니다.

포커스를 설정하면 커서가 텍스트 상자에 입력 준비가 깜박입니다.

질문 질문이 시나리오에서 어떻게 포커스를 설정합니까?

샘플

HTML 본문 샘플

<body> 
<form id="form1" runat="server"> 
<div id="popup"> 
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br /> 
    <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> 
</div> 
</form> 
</body> 

jQuery를 샘플

그것은 FF에 있지만 IE7에서 작동
 $(document).ready(function() { 
     var dlg = $("#popup").dialog(); 
     /*Line A*/ dlg.parent().appendTo(jQuery("form:first")); 
     /*Line B*/ $("#TextBox2").focus(); 
    }); 
+0

jQuery UI 대화 상자에서 점프 포커스를 방지하려면 내 솔루션을 참조하십시오. [http://stackoverflow.com/a/9428501/1230428](http://stackoverflow.com/a/9428501/1230428) 행운을 빌어 요 – Roc

답변

3

. 나는 2 개의 workarounds를 알아 냈다. 이름으로 텍스트 상자를 참조하지 않고 위치를 기준으로하거나 포커스를 두 번 설정하면 어떤 이유로 텍스트 상자를 참조하지 않습니다.

첫 번째

:

$("input:text:second").focus(); 

두 번째 :

$("#TextBox2").focus().focus(); 
1

그럴 수도 클래스 텍스트 상자, asp.net은 이름 충돌을 방지하기 위해 제어 ID를 미치게한다. 예를 들어

$(".mytextbox").focus(); 

은 .. 물론 이것은 의미의 목적을 패배하지만, 의미는 웹 양식과 잘 혼합니까.

4

대화 상자가 완전히 생성되기 전에 팝업을 이동하고 포커스를 호출하는 것이 문제라고 생각합니다.

대신 대화의 open 이벤트를 사용해보십시오 :

$(document).ready(function() { 
    $("#popup").dialog({ 
    open: function(){ 
     $(this).parent().appendTo(jQuery("form:first")); 
     $("#TextBox2").focus(); 
    } 
    }); 
}); 
+0

나를 Ubunutu Firefox 10.0.2 & IE 6에서 지금까지. 감사. –

7

때로는 실제로 우리가 코드에 의해 할당 작업을 수행하는 데 몇 초 정도 걸릴 JQuery와 UI의 대화 및 다른 방법을 위해, setTimeout("$('#TextBox2').focus();",100);를 사용해보십시오.

희망이 도움이됩니다. 이 해결 방법은 많은 응용 프로그램에서 도움이되었습니다.

+1

해결되었지만 제한 시간을 500으로 늘려야했습니다. Thx – theschmitzer