在文本框上设置焦点 – MVC3

如何在MVC3中为下面的Razor代码页面加载“金额”文本框的焦点?

<tr> <th> <div class="editor-label"> @Html.LabelFor(model => model.Amount) </div> </th> <td> <div class="editor-field"> @Html.EditorFor(model => model.Amount) @Html.ValidationMessageFor(model => model.Amount) </div> </td> </tr> 

你可以提供一个额外的类到包含div:

 <div class="editor-field focus"> @Html.EditorFor(model => model.Amount) @Html.ValidationMessageFor(model => model.Amount) </div> 

然后你可以使用一个jQuery类select器:

 $(function() { $('.focus :input').focus(); }); 

这就是说,你似乎有一个表中的多个Amount texboxes,显然只有一个可以在一个时间焦点。 所以假设你想这是第一个,你可以这样做:

 $('.focus :input:first').focus(); 

打开/Views/Shared/Site.Master文件并在jquery脚本包含此脚本后input以下内容:

 <script type="text/javascript"> $(function () { $("input[type=text]").first().focus(); }); </script> 

这将把重点放在应用程序的每个表单上的第一个文本框,而无需编写任何额外的代码!

取自http://www.tcscblog.com/2011/03/24/setting-default-focus-in-mvc-applications-with-jquery/

与HTML 5兼容浏览器设置自动对焦

 <input type="text" autofocus="autofocus" /> 

如果你需要IE浏览器支持,你需要使用JavaScript来完成

  <input type="text" id=-"mytextbox"/> <script type="text/javascript">document.getElementById('mytextbox').focus();</script> 

在剃刀:

 @Html.EditorFor(model => model.Amount,new{@autofocus="autofocus"}) 

诀窍是这些input元素总是有一个id属性,你可以用Html.IdFor作为string。 所以你可以用Javascript来关注你想要的:

 document.getElementById("@Html.IdFor(model => model.Amount)").focus(); 

或者,如果你更喜欢jQuery:

 $("#" + "@Html.IdFor(model => model.Amount)").focus(); 

我正在使用MVC4 / Razor,并没有在我的项目中有一个Site.Master文件,但是,我有一个_Layout.cshtml文件应用于每个页面(Views / Shared / _Layout.cshtml),所以我将其添加到该文件中的现有脚本中,如下所示。 这对我很好。

 <script type="text/javascript"> $(function () { $.ajaxSetup({ // ajaxSetup code here... } }); // Set the focus to the first textbox on every form in the app $("input[type=text]").first().focus(); }); </script>