В IE8 ввод ключа в форме не работает - PullRequest
23 голосов
/ 15 сентября 2009

У меня проблема в том, что в IE8 ввод не работает для отправки формы. Я создал тестовую страницу, чтобы раскрыть эту проблему. Кажется, что отображение формы в функции onLoad отключает результаты, что кнопка enter больше не вызывает отправку. Это ошибка в IE8 или проблема безопасности?

Код для воспроизведения:

onload = function() { 
    document.getElementById('test').style.display = 'block'; 
} 
#test {
    display: none;
}
<form id="test" method="get" action="javascript:alert('woei!')"> 
    <input type="text" name="user" value=""> 
    <input type="password" name="pw" value="">
    <input type="submit" value="submit" id="submit"> 
</form> 

Ответы [ 14 ]

0 голосов
/ 20 декабря 2010

Да, я тоже укусила эту ошибку сегодня. Я нашел этот обходной путь, хотя (отличающийся от OP):

 <script type="text/javascript"> 
 onload = function() { 
     document.getElementById('test').style.display = 'block'; 
+    document.getElementById('test').innerHTML =
+        document.getElementById('test').innerHTML;
 } 
 </script> 
 </head>

Просто воссоздайте содержимое формы из содержимого самого себя. Хлоп. Но это работает. (Знаменитые последние слова ...)

0 голосов
/ 01 марта 2010

Я верю Ясин понял. У меня была та же проблема: несколько текстовых полей в форме, видимость которых «скрыта». Мой обходной путь (чтобы предотвратить мигание формы) - установить непрозрачность формы на 0 в css, а затем настроить параметры стиля с помощью jQuery для готового документа.

Я считаю, что это не то, что нужно исправить с помощью JS.

0 голосов
/ 15 сентября 2009

Вы можете добавить событие onkeyup в свои поля ввода, чтобы, если вы нажмете ввод в поле ввода, оно также отправило.

Как уже упоминалось в CodePartizan, в противном случае вам нужно сфокусироваться на кнопке, поэтому, если вы перейдете к кнопке или нажмете на нее, мне кажется, она тоже подойдет.

0 голосов
/ 15 сентября 2009

Я попробовал это в IE8, и оно работает для меня. Вы должны убедиться, что часть формы имеет фокус.

Javascript имеет функцию фокусировки, которую вы можете использовать, чтобы установить фокус, если это то, что вам нужно.

var textbox = document.getElementById("whatever name input box's id will be");
if(textbox) textbox.focus();
...