2009-04-21 95 views
5

問題jQuery用戶界面對話框+ ASP.NET文本框+集中

我使用jQuery UI的對話框,顯示一些ASP.NET文本框一個對話框,並在其中一個按鈕。然而,當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的樣品

 $(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 2012-02-24 09:57:10

回答

3

它工作在FF但不是在IE7。我已經找到了2個解決方法。如果您不按名稱引用文本框,而是按位置引用,或者由於某種原因,如果將焦點設置爲兩次。

第一:

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

第二:

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

你也可以類的文本框,asp.net軋液控制ID,以避免命名衝突。

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

作爲一個例子。這當然違背了語義的目的,但語義不與web表單拌勻。

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中。謝謝。 – 2012-03-07 19:19:28

7

嘗試使用setTimeout("$('#TextBox2').focus();",100);,爲jQuery UI的對話框的等方法有時需要幾秒鐘到實際執行,我們通過代碼分配的任務。

希望這會有所幫助。這種解決方法在我的許多應用程序中都有所幫助。

+1

工作過,但不得不把我的超時時間增加到500. Thx – theschmitzer 2009-11-16 04:40:44

相關問題