Javascript InnerHTML в IE7 возиться с тегами INPUT - PullRequest
0 голосов
/ 10 августа 2009

Когда я получаю innerHTML элемента, содержащего элемент input [type = text], речевые метки вокруг значения и идентификатора удаляются в IE7, т.е.

<input type="text" id="test" value="test" />

становится:

<input type="text" id=test value=test />

Это было бы хорошо, за исключением того факта, что я использую плагин JQuery, который берет html-сегмент и привязывает к нему JSON. Это означает, что если у меня есть шаблон:

<div id="template"><input type="text"  value="${ValueToBind}" /></div>

Когда я получаю это через document.getElementByID ("шаблон"). InnerHTML Я получаю:

<input type="text"  value=${ValueToBind} />

Таким образом, если я связываю строку с пробелами, т. Е. «Это тест», то вывод:

<input type="text"  value=this is a test />

Очевидно, что это недопустимый html-код, который вызывает хаос в моем приложении. Что мне действительно нужно сделать, чтобы получить html в шаблоне «КАК ЕСТЬ», и чтобы IE не пытался сделать что-нибудь полезное, например удалить «речевые метки».

Ура, Крис.

Ответы [ 3 ]

2 голосов
/ 10 августа 2009
0 голосов
/ 10 августа 2009

Я полагаю, что это не то, что вы можете обойти напрямую, поскольку html без кавычек - это просто то, как IE7 представляет узел DOM внутри.

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

См.

innerHTML удаляет кавычки атрибутов в Internet Explorer

для других идей.

Использование jQuery's .html ()

http://docs.jquery.com/Attributes/html

обычно будет "способом jQuery", чтобы сделать это также, а не .getElementById

0 голосов
/ 10 августа 2009

Если проблема связана с IE7, можно быстро исправить условное замечание IE для IE7 с кодом, который повторно вставляет кавычки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...