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