Встроенная цитата из JQuery в атрибуте

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

  MYATT='Tony\ Test'

В некотором pont в моем коде я использую jquery, чтобы скопировать этот атрибут в такое поле,

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

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

Тони \

Что мне нужно видеть,

Тест Тони

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

Ответ 1

Try:

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.

Ответ 2

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

Ответ 3

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

Ответ 4

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

оповещения ($ (recdata).attr( 'Майат'));

Вы увидите тот же результат, что и "Тони", что означает, что браузер неправильно использует это значение. Сбежавшее значение не работает в этом случае.

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