2010-06-01 33 views
15

Tôi đang cố gắng để thiết lập tập trung vào một hộp văn bản được tạo ra theo cách sau:Làm thế nào để thiết lập tập trung vào một hộp văn bản Html.TextBoxFor - MVC 2

<%=Html.TextBoxFor(model => model.Email, new { style = "width:190px;Border:0px", maxsize = 190 })%> 

Tôi cố gắng để sử dụng javascript mà không giúp được gì nhiều:

<script type="text/javascript"> 
     var txtBox = document.getElementById("Email"); 
     if (txtBox != null) txtBox.focus(); 
    </script> 

Làm cách nào để đặt trọng tâm vào hộp văn bản Html.TextBoxFor in mvc 2?

Trả lời

29

Bạn đang viết javascript này ở đâu? Bạn cần phải chắc chắn rằng DOM được nạp:

window.onload = function() { 
    var txtBox = document.getElementById("Email"); 
    if (txtBox != null) { 
     txtBox.focus(); 
    } 
}; 

Ngoài ra những người giúp đỡ HTML có thể tạo ra một ID khác nhau tùy thuộc vào bối cảnh: ví dụ nếu bạn đang gọi TextBoxFor bên trong một mẫu biên tập.

Có nói rằng đây không phải là giải pháp tôi muốn giới thiệu bạn. Để giải quyết tất cả những vấn đề tôi thường áp dụng một lớp css vào textbox:

<%=Html.TextBoxFor(
    model => model.Email, 
    new { @class = "email", maxsize = "190" }) %> 

nơi email lớp được định nghĩa như thế này:

.email { 
    width: 190px; 
    border: 0; 
} 

và sau đó sử dụng một popular javascript framework để thiết lập focus khi DOM sẵn sàng:

$(function() { 
    $('input.email').focus(); 
}); 
+0

Vì vậy, dòng dưới cùng, nơi nào tôi đặt tập lệnh đó đặt tiêu điểm – Shimmy

+0

Bạn có thể đặt nó trong tệp javascript là nơi các tập lệnh thường đến. Nếu tập lệnh này được bao gồm ở cuối DOM, bạn không còn cần phải thực hiện cuộc gọi lấy nét trong trình xử lý 'document.ready' nữa. –

7

bạn có thể tự động lấy nét trong HTML5. <%=Html.TextBoxFor(model => model.Email, new { style = "width:190px;Border:0px", maxsize = 190 ,autofocus = "autofocus" })%>

Các vấn đề liên quan