2009-09-10 66 views
1

我擁有內容佔位符的主頁。我有使用母版頁的contentpage。在我所有的內容頁面中,我需要默認關注文本框,以便用戶可以直接鍵入文本框,而不是將鼠標移動到文本框上。在某些頁面沒有文本框,這樣我donnot NNET保持默認的焦點那邊如何使主頁中的內容頁面的默認焦點

有什麼辦法,我可以做到這一點在我的母版頁一次,就可以重複使用,在我的所有內容頁

謝謝

回答

0

如果你使用jQuery,一個可能的解決方案是:

  1. 給你想將焦點設置到一類特殊的文本框中。 「重點」適用於此目的。

  2. 寫一段代碼,比如在你的母版頁以下或在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(); 
    } 
}; 
1
<script language="javascript" type="text/javascript" > 


window.onload=function(){ 
var t= document.getElementById('<%=TextBox1.clientID %>'); 
t.focus(); 
} 


</script> 
3

嘗試使用此...

((TextBox)Master.FindControl("txtRequiredFocus")).Focus(); 
2

濫殺濫傷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; 
    } 
} 
+2

它燒傷我的眼睛! – womp 2009-09-10 05:39:05

+0

是的......這很醜陋......但它在所有瀏覽器中都能很好地工作。一個客戶最近要求這個功能,我不想爲他們的整個網站添加jQuery - 所以我找到了他們的片段:) – 2009-09-10 12:06:52

2

中你可以包括你的這個母版頁的加載事件:

// 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; 
    } 
} 
+0

但在頁面中的文本框控件的ID是不同的頁面1:作爲txtusername page2:as txtemployeeid – happysmile 2009-09-10 06:53:46

+0

所以我不能告訴javscript使用這個控制作爲默認焦點在所有頁面 – happysmile 2009-09-10 06:54:17

+0

@ prince23:我更新了代碼,以便ID不再重要。 @David Andres和@Nathan Taylor發佈了Javascript方法。 – 2009-09-10 14:09:41