问题
我正在使用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 :(得分:7)
尝试使用setTimeout("$('#TextBox2').focus();",100);
,对于jQuery UI的对话框和其他方法,有时需要几秒钟来实际执行我们通过代码分配的任务。
希望这会有所帮助。这种解决方法在我的许多应用程序中都有所帮助。
答案 1 :(得分:4)
我认为问题在于您在完全创建对话框之前移动弹出窗口并调用焦点。
尝试使用对话框的open
事件:
$(document).ready(function() {
$("#popup").dialog({
open: function(){
$(this).parent().appendTo(jQuery("form:first"));
$("#TextBox2").focus();
}
});
});
答案 2 :(得分:3)
它适用于FF但不适用于IE7。我已经找到了两个工作。如果您没有按名称但按位置引用文本框,或者出于某种原因(如果您将焦点设置两次)。
第一个:
$("input:text:second").focus();
第二个:
$("#TextBox2").focus().focus();
答案 3 :(得分:1)
你也可以对文本框进行分类,因为asp.net会破坏控件ID以避免命名冲突。
$(".mytextbox").focus();
作为一个例子..这当然会破坏语义的目的,但语义不能与webforms完美搭配。