我擁有內容佔位符的主頁。我有使用母版頁的contentpage。在我所有的內容頁面中,我需要默認關注文本框,以便用戶可以直接鍵入文本框,而不是將鼠標移動到文本框上。在某些頁面沒有文本框,這樣我donnot NNET保持默認的焦點那邊如何使主頁中的內容頁面的默認焦點
有什麼辦法,我可以做到這一點在我的母版頁一次,就可以重複使用,在我的所有內容頁
謝謝
我擁有內容佔位符的主頁。我有使用母版頁的contentpage。在我所有的內容頁面中,我需要默認關注文本框,以便用戶可以直接鍵入文本框,而不是將鼠標移動到文本框上。在某些頁面沒有文本框,這樣我donnot NNET保持默認的焦點那邊如何使主頁中的內容頁面的默認焦點
有什麼辦法,我可以做到這一點在我的母版頁一次,就可以重複使用,在我的所有內容頁
謝謝
如果你使用jQuery,一個可能的解決方案是:
給你想將焦點設置到一類特殊的文本框中。 「重點」適用於此目的。
寫一段代碼,比如在你的母版頁以下或在JS腳本文件中包含你的母版頁:
$(document).ready
(
function()
{
//get an array of DOM elements matching the input.focus selector
var focusElements = $("input.focus").get();
//if a focus element exists
if(focusElements.length > 0)
{
focusElements[0].focus();
}
}
);
使用香草JavaScript的一個類似的方法是將標籤與文本框一個特殊的屬性。讓我們使用焦點。
window.onload = function()
{
//get all input elements
var inputElements = document.getElementsByTagName("input");
var elementToFocus = null;
for(var i = 0; i < inputElements.length; ++i)
{
var focusAttribute = inputElements[i].getAttribute("focus");
if(focusAttribute)
{
elementToFocus = inputElements[i];
break;
}
}
if(elementToFocus)
{
elementToFocus.focus();
}
};
<script language="javascript" type="text/javascript" >
window.onload=function(){
var t= document.getElementById('<%=TextBox1.clientID %>');
t.focus();
}
</script>
嘗試使用此...
((TextBox)Master.FindControl("txtRequiredFocus")).Focus();
濫殺濫傷JavaScript方式在頁面上選擇的第一個有效輸入字段:
function SelectFirstInput() {
var bFound = false;
for (f = 0; f < document.forms.length; f++) {
// for each element in each form
for (i = 0; i < document.forms[f].length; i++) {
// if it's not a hidden element
if (document.forms[f][i].type != "hidden") {
// and it's not disabled
if (document.forms[f][i].disabled != true) {
// set the focus to it
document.forms[f][i].focus();
var bFound = true;
}
}
// if found in this element, stop looking
if (bFound == true)
break;
}
// if found in this form, stop looking
if (bFound == true)
break;
}
}
中你可以包括你的這個母版頁的加載事件:
// if the ID is constant you can use this:
/*TextBox textBox = (TextBox)Page.Controls[0]
.FindControl("ContentPlaceHolder1")
.FindControl("myTextBox");
*/
// this will look for the 1st textbox without hardcoding the ID
TextBox textBox = (TextBox)Page.Controls[0]
.FindControl("ContentPlaceHolder1")
.Controls.OfType<TextBox>()
.FirstOrDefault();
if (textBox != null)
{
textBox.Focus();
}
這將匹配與具有以下標記內容頁:
<asp:Content ID="Content" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<asp:TextBox ID="myTextBox" runat="server" />
</asp:Content>
編輯:如果LINQ是不是一種選擇,那麼你可以使用它代替:
foreach (Control control in Page.Controls[0].FindControl("ContentPlaceHolder1").Controls)
{
if (control is TextBox)
{
((TextBox)control).Focus();
break;
}
}
但在頁面中的文本框控件的ID是不同的頁面1:作爲txtusername page2:as txtemployeeid – happysmile 2009-09-10 06:53:46
所以我不能告訴javscript使用這個控制作爲默認焦點在所有頁面 – happysmile 2009-09-10 06:54:17
@ prince23:我更新了代碼,以便ID不再重要。 @David Andres和@Nathan Taylor發佈了Javascript方法。 – 2009-09-10 14:09:41
它燒傷我的眼睛! – womp 2009-09-10 05:39:05
是的......這很醜陋......但它在所有瀏覽器中都能很好地工作。一個客戶最近要求這個功能,我不想爲他們的整個網站添加jQuery - 所以我找到了他們的片段:) – 2009-09-10 12:06:52