• Привет, Гость!
  • Войти
  • Регистрация
  • Записи
  • Форумы
  • Люди
  • Файлы
  • Работа
  • Технологии

как заставить кнопку Enter нажимать конкретный submit?

Все форумы  Поиск  Правила  Помощь 
 Активные темы  Темы без ответов
Привет, гость! Войти
Форумы GotDotNet.Ru » ASP.NET WebForms » как заставить кнопку Enter нажимать конкретный submit?
Страницы: 1
RSS
как заставить кнопку Enter нажимать конкретный submit?
arsa
Сообщений: 69 Регистрация: 04.05.2004
#1
12.05.2004 14:38
часто хочется по нажатию Enter сделать некоторое действие (поиск например) event к которому привязан к кнопке. А нажатие Enter не нажимает кнопку если их более чем одна на форме. Сколько не бился не смог найти как сделать кнопку "по умолчанию".

Какие мысли?
 
 
poigraem
Сообщений: 153 Регистрация: 09.04.2003
#2
12.05.2004 14:51
это решается добавлением несложного клиентского скрипта.

где то видел  контролы  облечающие жизнь в таком случае... сходу не нашел.

 
 
jazzy
Сообщений: 394 Регистрация: 20.02.2003
#3
12.05.2004 15:02
попробуй сделать все кнопки на форме button-ами, а нужную — submit-ом...
 
 
poigraem
Сообщений: 153 Регистрация: 09.04.2003
#4
12.05.2004 15:04
я так понял человеку как раз нужна не одна такая кнопка :D

 
 
jazzy
Сообщений: 394 Регистрация: 20.02.2003
#5
12.05.2004 15:16
тоесть, ты понял что ему по нажатию Enter хочется нажимать не одну кнопку, а несколько?.. оригинальное понимание... :-)
 
 
stdev_clone
Сообщений: 1 Регистрация: 12.05.2004
#6
12.05.2004 15:20
У меня была похожая ситуация, надо было сабмитить кнопку при нажании ентера в контроле ввода, причем конретную кнопку а не любую. Нашел на сайте скрипт для етого, но проверил на нетскейпе 6м и оказалоь что он не работает, хотя с виду был самым простым.... Пришлось для каждого такого случая делать мини форму. При нажатии на ентер она вся сабмитится, и таким образом я узнаю что же пользователь сделал на клиетнте.
 
 
arsa
Сообщений: 69 Регистрация: 04.05.2004
#7
12.05.2004 16:52
к сожалению скрипт немного сложный... потому что скрипт, который отвечает за эвенты в веб-форме намного сложный :)
 
 
jazzy
Сообщений: 394 Регистрация: 20.02.2003
#8
12.05.2004 17:26
на самом деле такой скрипт действительно не очень сложный. но единственное, что я помню с того времени когда пришлось его написать — то, что для ИЕ, Мозилы и Оперы пришлось написать три скрипта. а где гарантия, что клиент не будет юзать ещё какой-то браузер?.. по-этому, если нет желания заниматься нудной работой по изучению понимания альтернативными браузерами DOMa и событий, рекомендую всё-таки внять моему первому постингу...
 
 
arsa
Сообщений: 69 Регистрация: 04.05.2004
#9
12.05.2004 17:38
да они же все <asp:button>
задача сделать один из них "главным"
 
 
jazzy
Сообщений: 394 Регистрация: 20.02.2003
#10
12.05.2004 17:48
есть ещё HtmlButton... :-)
 
 
poigraem
Сообщений: 153 Регистрация: 09.04.2003
#11
13.05.2004 6:30
>тоесть, ты понял что ему по нажатию Enter хочется нажимать не одну кнопку, а несколько?.. оригинальное понимание...

нет, я так понял у человека на форме несколько независимых блоков, в каждом из  которых  должна быть своя дефолтная кнопка.

это самая распространенная разновидность данной проблемы.

 
 
arsa
Сообщений: 69 Регистрация: 04.05.2004
#12
13.05.2004 17:52
нет... фишка в том, что при нажатии enter в IE происходит submit формы.

Так вот, если кнопка на форме только одна, то эвент на неё вроде приходит (простейший пример - форма для login).

А если кнопок много, то вообще никаких эвентов не происходит... (то есть onchange конечно будет, но это не то)

Например на поиске у меня есть несколько кнопок - по введённому тексту искать разные типы данных. Хочется что бы после ввода текста в поле и нажатия enter нажималась конкретная кнопка.

В общем понятно, что выход - перехватить onsubmit, и там посмотреть есть ли default кнопка и её нажать вместо сабмита, а сабмит отменить :)

Неприятно что... что в winforms такое есть, а в asp.net - нет
 
 
Zorina
Сообщений: 3035 Регистрация: 15.10.2003
#13
14.05.2004 7:09
на форме: для текстового поля

onkeypress=" if(window.event.keyCode==13) ReturnEvent('MAIL')

я вот так вот делала, а в Page_Load :

string s = Request.Form["RETURN__EVENT"];
if (s == "MAIL"){...}

Может быть и неправильно с какой-либо точки зрения, хотелось бы услышать мнение гуру :)

http://asp.net/learn/data-access/ Ищи там где потерял, а не там где светло.
 
 
Aquasat
Сообщений: 27 Регистрация: 13.07.2007
#14
01.10.2007 9:55

Вот нашёл:

1. Если у тега form установлено свойство defaultbutton, то при нажатии на Enter будет нажата кнопка идентификатор которой указан в свойстве.
2. Если у тега form не установлено свойство defaultbutton, то браузер "нажмет" первый submit control (). Чтобы рендерился в submit control необходимо установить UseSubmitBehavior="true".
3. Если установить свойство DefaultButton контрола Panel, то для всех полей ввода находящихся внутри панели на Enter будет нажата кнопка указанная в DefaultButton (вне зависимости от свойства DefaultButton тега form и DefaultButton родительских панелей). Причем можно указать идентификатор кнопки не лежащей на панели.

http://www.itkazan.com/blogs/raimon/a...utton.aspx
 
 
KittyHawk
Сообщений: 1 Регистрация: 24.02.2010
#15
24.02.2010 3:16
Не знаю, будет ли это Вам полезно, но расскажу.
Сейчас изучаю asp.net и столкнулся со такой проблемой: есть веб-форма, использующая мастер страницы, на форме несколько input'ов и один submit, в обработчике нажатия на submit написан некий код, проблема заключалась в том, что при нажатии Enter на каком-либо из input'ов форма отправлялась на сервер, но не вызывался обработчик нажатия кнопки. Лечится так:
В обработчике Page_Load пишу: this.Form.DefaultButton = this.btRegister.UniqueID;
Это заставляет мою кнопку стать DefaultButton.
 
 
 
Страницы: 1
Форумы GotDotNet.Ru » ASP.NET WebForms » как заставить кнопку Enter нажимать конкретный submit?
О сайте   Свяжитесь с нами   Версия для печати
Работает на 1С-Битрикс: Управление сайтом ASP.NET  |  Хостинг на Parking.Ru