Неверно размещенный <form>делает строки таблицы невидимыми ТОЛЬКО при обслуживании через AJAX - PullRequest
0 голосов
/ 29 апреля 2011

ОК, я прошу об этом, я знаю. Пожалуйста, потерпите меня.

У меня есть , который встроен между некоторыми тегами строк таблицы, что-то вроде этого:

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

Есть ли способ предотвратить это или, возможно, заставить эти строки таблицы отображаться? Может быть, тегу формы нужно какое-то свойство display, размещенное на нем, чтобы эти строки наследовали его?

Я большой сторонник кода, соответствующего стандартам, но иногда босс просто не слушает. Поэтому, пожалуйста, оставьте комментарии «исправить свой код», если это все, что у вас есть. Я ценю это, но это не то, что я спрашиваю здесь.

1 Ответ

0 голосов
/ 30 апреля 2011

Похоже, что эта проблема вызвана тем фактом, что страница загружается через 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".

...