Предотвращение реакции кнопки на «Enter» в ASP.net - PullRequest
0 голосов
/ 14 мая 2010

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

На некоторых страницах, которые используют этот шаблон и имеют формы на них, нажатие клавиши Enter инициирует событие нажатия на этой кнопке изображения, а не кнопку отправки в форме. Есть ли простой способ предотвратить срабатывание события нажатия кнопки изображения, если оно не было нажато мышью? Я думаю, что метод javascript - это взлом, тем более что кнопка даже не существует в главном шаблоне до тех пор, пока кнопка не будет динамически создана в Page_Load (это ужасно, так как я не могу просто сделать <% =btnName.ClientId %>, чтобы обратиться к название кнопки на моей странице aspx).

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


Я постараюсь показать наш пример здесь:

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

В моем мастер-шаблоне (FullMenu.master) у меня есть эта панель

<asp:Panel runat="server" ID="pnlFavorite" style="display:inline;"></asp:Panel>

Далее есть класс, который создает кнопку и добавляет ее на панель в главном шаблоне:

    public void InsertStarButton()
    {
        CreateStarButton();
        pnl.Controls.Add(bright);
    }

и

    private void CreateStarButton()
    {
        bright = new ImageButton();
        bright.ImageUrl = "~/resources/images/star.png";
        bright.Height = new Unit(12, UnitType.Pixel);
        bright.ID = "btnStar";
    }

То, что я пробовал ранее, это не сработало, было в InsertStarButton() Я добавил строку pnl.DefaultButton = "btnStar", но это ничего не изменило на странице. Даже если бы у меня мигал курсор внутри текстового поля в форме на странице, кнопка «звезда» запускает событие щелчка, если нажата клавиша Enter.

Ответы [ 2 ]

2 голосов
/ 14 мая 2010
0 голосов
/ 14 мая 2010

Нажатие ENTER в однострочном текстовом поле формы отправит форму. Вот как это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...