JQuery встроенная цитата в атрибуте - PullRequest
1 голос
/ 12 августа 2009

У меня есть пользовательский атрибут, который заполняется из базы данных. Этот атрибут может содержать встроенную одинарную кавычку, например:

  MYATT='Tony\'s Test'

На каком-то месте в моем коде я использую jquery для копирования этого атрибута в поле вроде этого,

 $('#MY_DESC').val($(recdata).attr('MYATT'));

MY_DESC - текстовое поле в диалоговом окне. Когда я отображаю диалоговое окно, все, что я вижу в поле, это

Tony \

Мне нужно посмотреть,

Тест Тони

Как я могу это исправить, чтобы я мог видеть всю строку?

Ответы [ 4 ]

2 голосов
/ 12 августа 2009

Попробуйте:

MYATT='Tony&#x27s Test'

Я не удосужился проверить это с помощью спецификации HTML, но запись wikipedia гласит:

The ability to "escape" characters in this way allows for the characters < and & (when written as &lt; and &amp;, respectively) to be interpreted as character data, rather than markup. For example, a literal < normally indicates the start of a tag, and & normally indicates the start of a character entity reference or numeric character reference; writing it as &amp; or &#x26; or &#38; allows & to be included in the content of elements or the values of attributes. The double-quote character ("), when used to quote an attribute value, must also be escaped as &quot; or &#x22; or &#34; when it appears within the attribute value itself. The single-quote character ('), when used to quote an attribute value, must also be escaped as &#x27; or &#39; (should NOT be escaped as &apos; except in XHTML documents) when it appears within the attribute value itself. However, since document authors often overlook the need to escape these characters, browsers tend to be very forgiving, treating them as markup only when subsequent text appears to confirm that intent.

1 голос
/ 12 августа 2009

Если вы не будете использовать двойные кавычки, поместите в них свой собственный атрибут :) Если нет, я предлагаю экранировать значение.

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

Если вы сделаете это:

предупреждение ($ (recdata) .attr ( 'Майат'));

Вы увидите тот же результат «Тони», означающий, что браузер неправильно использует значение. Экранированное значение не работает в этом случае.

Есть ли у вас средства для редактирования этих значений по мере их производства? Можете ли вы разобрать их, чтобы они включали escape-значения перед отображением?

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

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

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