Как заставить страницу HTML определять, какую кнопку нажимать (когда вы нажимаете клавишу Enter) без JavaScript? - PullRequest
0 голосов
/ 19 августа 2009

У меня есть страница ASP.NET с двумя разделами ... один для регистрации, один для входа в систему ... у каждого есть кнопка отправки.

Когда я нахожусь в части входа в систему на странице, я хочу, чтобы первая кнопка «Отправить» сработала при нажатии «Ввод». Находясь в части регистрации, я хочу, чтобы 2-я кнопка «Отправить» активировалась при нажатии «Enter».

Проблема: мне нужно, чтобы страница была доступна (т.е. я не могу использовать javascript)

У кого-нибудь есть идеи? :): (

Ответы [ 4 ]

2 голосов
/ 19 августа 2009

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

0 голосов
/ 19 августа 2009

Они в одной форме ...: (

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

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

Включение JavaScript само по себе не делает вашу страницу недоступной. Пока он все еще работает с отключенным JavaScript, все в порядке.

0 голосов
/ 19 августа 2009

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

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.panel.defaultbutton.aspx

0 голосов
/ 19 августа 2009

Это должно происходить автоматически, если две формы фактически являются отдельными формами. Другими словами, должно быть два отдельных элемента <form>, один для входа в систему и один для регистрации.

Edit:

Браузеры определяют, какую кнопку отправки «нажать», на основе формы, которая имеет фокус. Если в одной форме есть несколько кнопок отправки, что походит на ситуацию, браузер отправит, используя первую найденную кнопку отправки. Я не знаю, как обойти это поведение.

Вы действительно спрашиваете, как выполнить одно из двух действий с одной формой, что нарушает модель формы: форма предназначена для выполнения действия (GET или POST) с одним URL-адресом. Я могу придумать один способ обойти это поведение, но оно не особо чистое.

Предложение:

Я сделал грубый рисунок того, о чем я говорю. Вы в основном добавляете две кнопки-переключателя в верхней части формы, одну для входа в систему и одну для регистрации. Под ними у вас есть два набора полей, один с полями для входа в систему и один с полями для регистрации. Форма имеет одну кнопку отправки.

Нажмите, чтобы посмотреть в полный размер http://img220.imageshack.us/img220/5923/boardc.th.jpg

Пользователи без Javascript будут проверять соответствующий переключатель и заполнять соответствующий набор полей. Пользователи с Javascript имеют лучший опыт. Если установлен переключатель «Войти», скрыть набор полей регистрации. Если установлен переключатель радио регистрации, скрыть набор полей для входа.

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

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

...