Установить фокус на текстовое поле после обратной передачи - PullRequest
1 голос
/ 22 апреля 2010

У меня есть страница поиска с 3 текстовыми полями, с помощью которых пользователи могут фильтровать поиск.

Я сосредоточился на текстовом поле, содержащем текст.Если текст содержит более одного текста, просто сфокусируйтесь на последнем TextBox.

private void SetFocusOnTextBox(ControlCollection ctrlCollection)
{
    foreach (Control ctrl in ctrlCollection)
    {
        if (ctrl.GetType() == typeof(TextBox))
        {
            if (((TextBox)ctrl).Text != string.Empty)
            {
                SetFocus(ctrl);
            }
        }
    }
}

После выполнения кода и поиска пользователем фокус переходит к началу TextBox, а не к концу, где он должен был бы предполагаться.Как поместить вставку, отмеченную в конце этого TextBox?

Ответы [ 2 ]

1 голос
/ 23 апреля 2010

Я думаю, что ответ здесь: Используйте JavaScript, чтобы поместить курсор в конец текста в элементе ввода текста .

Взято из связанного решения: Вы должны добавить onfocus="this.value = this.value" ктри элемента управления в файле разметки.В ASP.NET это не так просто, как должно быть, но одним из решений является добавление атрибута в коде файла.

protected void Page_Init(object sender, EventArgs e)
{
    // MoveCursorToEndOnFocus is called in Page_Init and not Page_Load to avoid
    // filling the ViewState with unnecessary data.
    // TODO: Call MoveCursorToEndOnFocus here.
}

private void MoveCursorToEndOnFocus(ControlCollection controlCollection)
{
    foreach (TextBox textBox in controlCollection
        .Where(control => control.GetType() == typeof(TextBox)))
    {
        textBox.Attributes.Add("onchange", "this.value = this.value");
    }
}
0 голосов
/ 23 апреля 2010

Не должно ли быть

if (((TextBox)ctrl).Text == string.Empty)

перейти к самому нижнему пустому текстовому полю? Если это if (((TextBox)ctrl).Text != string.Empty), он установит фокус (в конце концов) на самое нижнее непустое текстовое поле.

Что касается перемещения курсора к последнему символу, попробуйте следующее:

function cursorToEnd( elem )
{
  elem.focus();
  elem.value+='x';
  elem.value=elem.value.replace(/x$/,"");   
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...