У меня есть форма с текстовым полем и кнопкой. 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 очерчивает то, что говорила Дилли, и работает отлично.
Извините, у него тоже есть кнопка. Спасибо что подметил это.





// 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)"
Спасибо за ввод, однако он выдает прекрасную ошибку «Объект не поддерживает это свойство или метод» :(
Использует ли он GET вместо POST? URL-адрес слишком длинный? Я видел это ...
Другая вещь, которую я делал в прошлом, - это обертывание области формы в Panel и установка атрибута DefaultButton на имеющуюся у вас кнопку отправки. Это эффективно сопоставляет ключ ввода с отправкой, пока у вас есть элемент формы в фокусе в области панели.
Нет, не будет (ответил на мой вопрос). Это сработало, спасибо! : D
Рад, что это сработало. Хорошая оговорка в этом отношении заключается в том, что если у вас есть несколько форм на странице (например, различные варианты поиска), вы можете обернуть панель вокруг каждой из них, и тогда соответствующая кнопка отправки будет правильно «сопоставлена».
это решение создает функцию javascript. Есть ли способ решить эту проблему, чтобы она была доступна?
Как правило, для формы требуется кнопка input type = "submit" или input type = "image", чтобы встроенное поведение могло отправлять форму при входе. Для его отправки вам не нужен javascript.
Просто создайте текстовый ввод в скрытом 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>
При использовании display:none IE не увидит кнопку и, следовательно, не сможет использовать ее для отправки формы. Вместо этого вы можете использовать z-index и абсолютное позиционирование, чтобы скрыть его под другим элементом, например. со стилем:
position:absolute; bottom: -20px; left: -20px; z-index: -1;
Теперь он все еще будет там, доступный для IE, но спрятанный под другим элементом.
Здесь есть хорошее описание этой проблемы и хорошее решение на основе jquery:
http://www.thefutureoftheweb.com/blog/submit-a-form-in-ie-with-enter
Это связано с особенностями IE для ввода одного текстового поля.
Простое решение - запретить странице иметь одно текстовое поле, добавив еще одно скрытое.
<input type = "text" name = "hidden" style = "visibility:hidden;display:none;" />
видеть.. http://www.4guysfromrolla.com/articles/060805-1.aspx
Скрыть кнопку - без использования display: none, но со следующими стилями:
position: absolute; /* no longer takes up layout space */
visibility: hidden; /* no longer clickable / visible */
Если вы это сделаете, вам не нужно будет добавлять какие-либо другие элементы или скрытые поля ввода.
Итак, в вашей форме вообще нет кнопок?