Неправильно размещенная <форма> делает строки таблицы невидимыми ТОЛЬКО при обслуживании через AJAX
Хорошо, я прошу об этом, я знаю. Пожалуйста, потерпите меня.
У меня есть <форма>, которая встроена между некоторыми тегами строк таблицы, что-то вроде этого:
<table>
<tr>
<td>foo</td>
</tr>
<form>
<tr>
<td>bar</td>
</tr>
</form>
</table>
Я знаю, что это незаконное размещение тега формы, но все браузеры, которые я пробовал, в любом случае разрешат это. У меня нет контроля над дизайном этого кода, поэтому, пожалуйста, потерпите меня.
Когда я загружаю эту страницу с помощью JQuery и плагина JQuery UI.Layout (см. Http://layout.jquery-dev.net/index.cfm), строки таблицы, заключенные в тег формы, больше не отображаются, Я предполагаю, потому что формы сами по себе не имеют никаких свойств отображения, которые либо JQuery, либо плагин UI.Layout заставляют эти строки наследовать это отсутствие отображения.
Firebug показывает те строки, выделенные серым цветом и с отступом на один уровень ниже тега формы, что соответствует их (отсутствию) отображению, я думаю. Интересно, что когда я не использую какой-либо материал JQuery, Firebug показывает эти строки как НЕ с отступом, а вместо этого на ЖЕ уровне, как тег формы, который их заключает (и, конечно, они не выделены серым цветом) - О, я тоже только что заметил, что в этом случае Firebug вообще не показывает закрывающий тег формы.
Я не уверен, что это вызвано JQuery, плагином UI.Layout или чем-то, что я сделал с помощью JavaScript, и я все еще копаюсь, но в этих библиотеках много кода, так что я действительно цените указатели, если у кого-то есть.
Есть ли способ предотвратить это, или, возможно, заставить эти строки таблицы иметь некоторое отображение? Может быть, тегу формы нужно какое-то свойство отображения, размещенное на нем, чтобы эти строки наследовали его?
Я большой сторонник кода, соответствующего стандартам, но иногда босс просто не слушает. Поэтому, пожалуйста, оставьте комментарии "исправить свой код", если это все, что у вас есть. Я ценю это, но это не то, что я спрашиваю здесь.
1 ответ
Похоже, что эта проблема вызвана тем фактом, что страница загружается через XMLHttpRequest ("AJAX"), а не обрабатывается статически (и это может или не может быть только проблема Firefox). Кажется, это так же, как это:
http://forums.mozillazine.org/viewtopic.php?f=25&t=645220&start=0&st=0&sk=t&sd=a
Этот поток также не имел никакого разрешения, кроме разрешения искаженного HTML. Весьма досадно, что браузер отображает его, если он передается через "обычный" запрос страницы браузера, но не при асинхронном запросе и подаче в DOM через скрипт.
Ах, хорошо, ошибочный код порождает ошибочное поведение, а?
Из-за отсутствия чего-либо еще (ну, есть несколько идей на основе JavaScript, таких как http://federmanscripts.com/2010/01/12/form-and-table-row-nesting-workaround/), но они не соответствуют моему контексту), я собираюсь использовать решение, предложенное пользователем в качестве комментария выше "mu is too short".