Кнопка ввода не отправляет форму (ТОЛЬКО IE) ASP.NET - PullRequest
10 голосов
/ 07 ноября 2008

У меня есть форма с текстовым полем и кнопкой. IE - единственный браузер, который не отправляет форму при нажатии Enter (работает в FF, Opera, Safari, Chrome и т. Д.) Я нашел эту функцию javascript, чтобы попытаться заставить IE вести себя; но безрезультатно:

function checkEnter(e){
    var characterCode
    if (e && e.which) {
        e = e
        characterCode = e.which
    } else {
        e = event
        characterCode = e.keyCode
    }
    if (characterCode == 13) {
        document.forms[0].submit()
        return false
    } else {
        return true
    }
}

Реализация:

searchbox.Attributes("OnKeyUp") = "checkEnter(event)"

Какой совет?

РЕДАКТИРОВАТЬ: Эта страница в CodeProject описывает то, что говорил Дилли, и это прекрасно работает.

Ответы [ 9 ]

25 голосов
/ 28 января 2009

Просто создайте текстовый ввод в скрытом div на странице. Это обойдет ошибку IE.

Пример div:

    <!-- Fix for IE bug (One text input and submit, disables submit on pressing "Enter") -->
    <div style="display:none">
            <input type="text" name="hiddenText"/>
    </div>
13 голосов
/ 07 ноября 2008

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

3 голосов
/ 10 февраля 2011

Здесь есть хорошее описание этой проблемы и хорошее решение на основе jquery:

http://www.thefutureoftheweb.com/blog/submit-a-form-in-ie-with-enter

2 голосов
/ 07 ноября 2008
// Use the following Javascript in your HTML view
// put it somewhere between <head> and </head>

    <script language="JavaScript" type="text/javascript"><!--
    function KeyDownHandler(btn)
    {
      if (event.keyCode == 13)
      {
        event.returnValue=false;
        event.cancel = true;
        btn.click();
      }
    }
    // -->
    </script>

    // Put this in your TextBox(es) aka inside <asp:textbox ... >
    onkeydown="KeyDownHandler(ButtonID)"
1 голос
/ 14 июня 2012

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

position: absolute; /* no longer takes up layout space */
visibility: hidden; /* no longer clickable / visible */

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

1 голос
/ 02 июня 2009

При использовании display:none IE не увидит кнопку и, следовательно, не сможет использовать ее для отправки формы. Вместо этого вы можете использовать z-index и абсолютное позиционирование, чтобы скрыть его под другим элементом, например со стилем:

position:absolute; bottom: -20px; left: -20px; z-index: -1;

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

0 голосов
/ 14 марта 2012

Это связано с особенностью IE для ввода одного текстового поля.

Простое решение - остановить страницу, имеющую одно текстовое поле, добавив еще одно скрытое.

<input type="text" name="hidden" style="visibility:hidden;display:none;" />

см .. http://www.4guysfromrolla.com/articles/060805-1.aspx

0 голосов
/ 07 ноября 2008

Обычно для формы требуется кнопка, тип ввода = «отправить» или тип ввода = «изображение», чтобы включить встроенное поведение для отправки формы при вводе. Вам не нужно javascript, чтобы отправить его.

0 голосов
/ 07 ноября 2008

Использует ли он GET вместо POST? URL слишком длинный? Я видел это ...

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