IE9 Double Form Submit Issue

Мне просто интересно, есть ли у кого-нибудь информация или отзывы о ситуации, в которой я нахожусь. В настоящее время я столкнулся с проблемой "Double Form Submit", когда я нажимаю кнопку "Submit" один раз, и она отправляет форму дважды. Это происходит только в IE9, но я тестировал только на Safari, Chrome (последняя версия), FF (Ver 5/6), IE8 и IE9.

Вот код:

<!DOCTYPE html>
<html lang="en-us" dir="ltr">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" >
<title>IE9 test</title>
</head>
<body>
<h1>Testing</h1>
<form method="POST" id="submit_form">
<input type="text" name="x" value="xxxx" />
<input type="text" name="y" value="yyyy" />
<button type="submit" class="btn_sign_in" id="btn_logon" onclick="this.disabled=true;document.forms[0].submit();">Submit</button>
</form>
</body>
</html>

Проблемная часть:

onclick="this.disabled=true;document.forms[0].submit();"

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

Самое сложное заключается в том, что проблема с двойным отправлением не всегда воспроизводима. Иногда он отправляет дважды, иногда - один раз.

Мой текущий способ решения проблемы - это изменение с:

<meta http-equiv="X-UA-Compatible" content="IE=edge" >

и изменение на:

<meta http-equiv="X-UA-Compatible" content="IE=8" >

Это заставляет IE9 использовать совместимость с IE8, и он будет правильно выполнять Javascript для отправки.

Я позвонил в службу поддержки Microsoft, и они утверждают, что это "проблема совместимости Javascript", так что нам нужно будет доработать наш Javascript, чтобы наш сайт работал правильно в IE9...(Duh!)

В любом случае, мой код:

onclick="this.disabled=true;document.forms[0].submit();"

уже изначально неправильный? Потому что, хотя другие браузеры не жалуются, но, возможно, это неправильно для начала?

Я надеюсь, что если кто-то также сталкивается с подобными проблемами, у него есть больше информации или отзывов. В настоящее время, если я не меняю X-UA-Compatible на IE=8, я могу изменить свой код на:

onclick="this.disabled=true;"

Это также решит проблему двойной отправки, но есть ли список проблем совместимости с IE9, на которые мы должны обратить внимание?

Спасибо!

14
задан Roman C 13 March 2013 в 18:47
поделиться