Как сделать Фокус по умолчанию на странице содержимого с главной страницы - PullRequest
1 голос
/ 10 сентября 2009

У меня есть мастер-страница с заполнителем содержимого. У меня есть страница контента, которая использует главную страницу. на всей моей странице содержимого мне нужно по умолчанию сосредоточиться на текстовом поле, чтобы пользователь мог непосредственно вводить текстовое поле, вместо этого перемещая мышь над текстовым полем. на некоторых страницах нет текстового поля, так что я не могу оставить в нем фокус по умолчанию

Есть ли способ, которым я могу сделать это на своей главной странице один раз, и могу ли это использовать на всей моей странице содержимого

спасибо

Ответы [ 6 ]

3 голосов
/ 10 сентября 2009

попробуйте использовать это ...

((TextBox)Master.FindControl("txtRequiredFocus")).Focus();
2 голосов
/ 10 сентября 2009

Вы можете включить это в событие загрузки вашей главной страницы:

// 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;
    }
}
2 голосов
/ 10 сентября 2009

Неизбирательный подход 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;
    }
}
1 голос
/ 10 сентября 2009
<script language="javascript" type="text/javascript" >


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


</script>
0 голосов
/ 08 июля 2018
Control masterC = 
Page.Master.FindControl("ContentPlaceHolder1");
    TextBox TextBox1 = 
masterC.FindControl("TextBoxUsername") as TextBox;

TextBox1.Focus();
0 голосов
/ 10 сентября 2009

Если вы используете 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();
  }
};
...