Кнопка ASP.NET по умолчанию - PullRequest
4 голосов
/ 02 декабря 2008

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

Как лучше всего настроить кнопки отправки по умолчанию. Я мог бы обернуть все в панели asp и установить свойство DefaultButton, но это кажется немного утомительным. Есть ли лучший способ?

Ответы [ 5 ]

3 голосов
/ 02 декабря 2008

использовать свойство defaultbutton формы или панели

<form defaultbutton=“button1” runat=“server”>    
    <asp:button id=“button1” text=“Same Page” runat=“server”/>    
    <asp:panel defaultbutton=“button2” runat=“server”>    
       <asp:textbox id=“foo” runat=“server”/>    
       <asp:button id=“button2” runat=“server”/>    
    </asp:panel>    
</form>
2 голосов
/ 02 декабря 2008

Как вы обнаружили, кнопки по умолчанию могут вызывать проблемы, когда на странице более одной кнопки. Я бы взял предложение Geeks, но упростил его, удалив клиентский скрипт setfocus, и расширил его, добавив событие keydown как в текстовое поле поиска, так и в текстовые поля входа в систему, так что клавиша ввода запускает правильную кнопку в зависимости от того, использует ли ваш пользователь поиск поле или поле входа в систему, или любое другое текстовое поле, к которому вы хотите добавить JavaScript.

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

0 голосов
/ 08 апреля 2011

Это то, что мы попробовали на нашем проекте, который, казалось, работал. Я изменил кнопку Search asp: Button, чтобы она стала asp: LinkButton. Затем я добавил немного стиля CSS, чтобы придать ему фоновое изображение, чтобы оно выглядело как кнопка. Кнопки LinkButtons, по-видимому, не используются страницей для определения того, какая кнопка является действием по умолчанию при нажатии клавиши Enter. Приятно было то, что LinkButton все еще может иметь связанные с ними действия, связанные с кликом, поэтому мне не нужно было ничего менять в своем коде.

0 голосов
/ 02 декабря 2008

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

Атрибут <iframe> src указывает на небольшую автономную страницу aspx, содержащую ваше текстовое поле и кнопку отправки, которая перенаправляет на вашу форму результатов поиска.

0 голосов
/ 02 декабря 2008

установить фокус на текстовое поле,

Page.RegisterStartupScript ("SetFocus", " document.getElementById ('" + TextBox1.ClientID + "') .focus (); ");

, а затем

В событии keydown для последнего текстового поля вы можете сделать что-то вроде этого:

Если e.KeyCode = Keys.Enter Then Me.Button1.Select () Конец, если

...