Мне потребовалось немного времени, чтобы решить эту проблему, но на самом деле это связано с ошибкой в 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>
теги вручную, чтобы избежать подобных проблем.
Надеюсь, это поможет.