IE9 + Браузер не отправляет форму в IE9, но отлично работает для IE7, IE8 - PullRequest
2 голосов
/ 11 октября 2011

В моем приложении на Rails, когда я пытаюсь отправить форму из IE7 или IE8.Работает как положено.Но когда я пытаюсь из IE9, это не удается.

Как я могу решить эту проблему?

1 Ответ

4 голосов
/ 20 января 2012

Мне потребовалось немного времени, чтобы решить эту проблему, но на самом деле это связано с ошибкой в ​​IE9. Если перед формой у вас есть тег <p>, убедитесь, что вы закрыли его с помощью </p>, прежде чем перейти к тегу <form>.

По сути, закрытие тега <p> не является обязательным, и оно должно автоматически закрываться элементом уровня блока, таким как тег <form>. К сожалению, IE9 не закрывает его. Однако, если в вашей форме есть элемент уровня блока (например, <div>), <p> автоматически закроется в этой точке. Затем форма становится дочерним элементом тега <p>, и элемент div (вместе с элементами управления формой и кнопкой отправки) полностью выпадает из формы.

Это плохо:

<p> <form> <div> Form Contents </div> </form>

, который отображается в IE9 как:

<p> <form> </form> </p> <div> Form Contents </div>

Это хорошо:

<p></p> <form> <div> Form Contents </div> </form>

Кажется, я могу воспроизвести проблему только при использовании сценариев для изменения innerHTML, но насколько я понимаю, это общая ошибка с элементом <form> в IE9. Лично я бы рекомендовал закрывать ВСЕ <p> теги вручную, чтобы избежать подобных проблем.

Надеюсь, это поможет.

...