поведение кнопки отправки в IE - PullRequest
1 голос
/ 03 сентября 2010

У меня проблема в IE.Нажатие клавиши ввода, когда фокус находится на последнем элементе управления вводом, переводит фокус на кнопку «Далее».Это отправляет форму.Пока все хорошо.

Код в моем базовом классе WizardController проверяет, имеет ли кнопка Следующая отправка значение NULL, как показано ниже:

        protected string NextButton 
        {
            get 
            { 
                return ControllerContext.HttpContext.Request.Params["NextButton"];Nex
            }
        }

Однако, несмотря на отправку формы, этасвойство возвращает ноль, если пользователь явно не нажимает кнопку мышкой.

Это явно неправильно, но я понятия не имею, почему это происходит.

ИЗМЕНЕНО, ЧТОБЫ УКАЗАТЬ ТОЧНУЮ ПРОБЛЕМУ:

Проблема возникает, только если в HTML-форме присутствует ТОЛЬКО один элемент ввода TEXT, который отображается в браузере.

END EDIT

Андрей

Ответы [ 2 ]

2 голосов
/ 13 сентября 2010

Я наконец нашел объяснение своей проблемы:

Кажется, это ошибка в IE, из-за которой, если в визуализированной HTML-форме есть один текстовый ввод, то IE не отправит форму должным образом. Проблема описана (кратко) по адресу:

Форма отправки через клавишу ввода при использовании IE

В приведенной выше ссылке нет описания того, почему возникает ошибка или какая версия IE, поэтому общее решение лучше.

Обходной путь, предложенный в статье, заключается в добавлении скрытого ввода текста css (с условиями для IE):

<!--[if IE]>
  <input type="text" style="display: none;" disabled="disabled" size="1" />
<![endif]-->

Это сработало для меня, поэтому проблема решена.

Для документирования проблемы в том виде, в каком она у меня возникла, включено следующее:

В отличие от проблемы, описанной в статье, моя форма отправлена. Однако, когда я попытался проверить, к какой кнопке обращались, нажав клавишу табуляции или клавишу ввода, кнопка отправки не была в коллекции HttpContext.Request.Params. Поэтому поведение, которое я видел, было немного другим.

То, что указанная выше статья определила, это то, что такое поведение наблюдается только тогда, когда есть ТОЛЬКО один элемент управления вводом текста. Например, один флажок не вызывает проблемы.

Я надеюсь, что это адекватно документирует проблему ... и что MS однажды исправит ошибку.

1 голос
/ 03 сентября 2010

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

<input type='hidden' name='action' value='next' />

Если у вас несколько кнопок, вы всегда можете использовать JavaScript, чтобы изменить значение элемента действия непосредственно перед отправкой.

...