Опера проблема с JavaScript при отправке - PullRequest
0 голосов
/ 31 июля 2009

У меня есть элемент ввода с onchange = "do_something ()". Когда я печатаю и нажимаю клавишу ввода, он работает правильно (сначала do_something, затем отправляю) в Firefox и Chromium (не проверено в IE и Safari), однако в Opera это не так (он отправляет сразу) Я попытался использовать такую ​​задержку:

<form action="." method="POST" onsubmit="wait_using_a_big_loop()">
<input type="text" onchange="do_something()">
</form>

но это тоже не сработало.

У вас есть рекомендации?

Edit: Наконец, я использовал сочетание решений, предоставляемых iftrue и crescentfresh, просто расфокусировал поле для запуска метода do_something (), я сделал это потому, что некоторые другие поля ввода имели другие методы onchange.

$('#myForm').submit( function(){
    $('#id_submit').focus();
} );

Спасибо

Ответы [ 3 ]

3 голосов
/ 31 июля 2009

Вы можете использовать jquery и захватить форму.

http://docs.jquery.com/Events/submit

<form id = "myForm">

</form>

   $('#myForm').submit( function(){
   do_something();
   } );

Это должно отправить форму после вызова этого метода. Если вам нужен более детальный контроль, выведите return false в конце события submit и сделайте свой собственный запрос post с помощью $ .post ();

2 голосов
/ 31 июля 2009

Из http://cross -browser.com / forums / viewtopic.php? Id = 123 :

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

В IE нажатие Enter фокусирует кнопка отправки - так ввод текста теряет фокус, и это вызывает изменение событие.

При нажатии FF ввод не фокусируется кнопка отправки, но изменение событие по-прежнему происходит.

В Opera не происходит ничего из вышеперечисленного.

keydown более согласован во всех браузерах для обнаружения изменений в поле.

0 голосов
/ 31 июля 2009

Я не очень хорош в Javascript, но не могли бы вы сделать что-то подобное?

<form name="myform" action="." method="POST">
<input type="text" onchange="do_something();document.myform.submit();">
</form>
...