JavaScript « Сабмит формы с помощью javascript в Google Chrome срабатывает только единожды
Есть простая форма.
<form target="_blank" action="somescript.php" method="Post" id="simpleForm">
<input type="hidden" name="url" value="http://...">
<input type="hidden" name="code" value="wrxosf">
</form>
...и некая ссылка
<a href="#" onclick="$('#simpleForm').submit();return false;">Do it!</a>
Работает нормально во всех браузерах, однако в Chrome только единожды. Последующие нажатия на ссылку не дают результатов.
<form target="_blank" action="somescript.php" method="Post" id="simpleForm">
<input type="hidden" name="url" value="http://...">
<input type="hidden" name="code" value="wrxosf">
</form>
...и некая ссылка
<a href="#" onclick="$('#simpleForm').submit();return false;">Do it!</a>
Работает нормально во всех браузерах, однако в Chrome только единожды. Последующие нажатия на ссылку не дают результатов.
1 ответов
Сделал подробное исседование, проблема на самом деле сокрыта в Хроме,
Создаем простую форму c кнопкой Submit. В форме указываем target="_blank"
<form method="Post" target="_blank" action="nofile">
<input type="submit">
</form>
Сабмит открывает новую вкладку. Закрываем ее, и более кнопка сабмит не создает никаких событий.
Данная ситуация уже описана в багтрекере Хромиума и Вебкита, что говорит о том, что в третьем Safari данная проблема так же актуальна.
Ну что же, ждем решения со стороны создателей этих супербраузеров. ;)
Я думаю что это или баг или фитча хрома.
Вот например такой код
<html>
<head>
<script>
function f() {
alert("you are here");
return true;
}
</script>
</head>
<body>
<form method="GET" action="someurl" onsubmit="return f();" id="superForm">
<input type="text" name="test">
<input type="submit">
</form>
<a href="#" onclick="document.getElementById('superForm').submit();return false;">Do it!</a>
</body>
</html>
Если вы нажимаете сабмит - то вызывается функция f() и вылетает алерт. Если же в этом же примере отправлять форму ссылкой то эта f() уже не вызывается и форма отправляется без проверки onSubmit