DOM未加载会阻止TextBoxFor控件中的focus()

时间:2013-04-22 17:10:00

标签: jquery asp.net-mvc dom

我不确定为什么我的焦点()不能处理一个视图。

我在JQuery中有一个类,通过一个母版页,定义为:     $(" .focus&#34)。对焦();

这适用于我的代码中其他位置定义的文本框。例如:

<td><%: Html.DropDownListFor(p => p.PhoneTypeId, phoneTypeListItems, new{@class="focus"}) %></td>

但是在一个具有相似代码的视图中,焦点未设置:

<td><%=Html.TextBoxFor(de => de.EmailAddress1, new {@class="focus"})%></td>

如果我的焦点课程正在使用其他控件,那么它就不能成为我的jquery。我已经尝试了很多选项来设置它,包括$(&#34;#EmailAddress1&#34;)。focus()和在同一视图中定义我自己的jquery以及旁边的其他选项。唯一没有点击文本框本身的工作就是点击重新加载按钮(Chrome和IE9),这让我相信DOM没有加载。但在我的jquery中我使用:     $(document).ready(function(){

我不知道如何解决这个问题。有人可以帮忙吗?

P.S。在进一步的测试中,我发现JQuery中的其他类元素可以工作。例如,     &lt;%= Html.TextBoxFor(de =&gt; de.EmailAddress1,new {@class =&#34; focus phoneNumber&#34;})%&gt; phoneNumber和focus都在相同的.js中     $(&#34; .focus&#34)。对焦();     $(&#34; .phoneNumber&#34;)。mask(&#34;(999)999-9999&#34;);

但是只会显示phoneNumber而焦点不会显示。

1 个答案:

答案 0 :(得分:0)

如果你想使用jQuery设置焦点类,你必须提供 ID

<td><%=Html.TextBoxFor(de => de.EmailAddress1, new {@class="focus", id = "EmailAddress", name = "EmailAddress"})%></td>

现在在 jQuery

$(document).ready(function(){
    $("#EmailAddress").focus();
});