Як я уникаю однієї цитати?


188

Як я можу уникнути '(єдиної цитати) у JavaScript?

Ось де я намагаюся його використовувати:

<input type='text' id='abc' value='hel'lo'>

Результатом для наведеного вище коду є "hel", заповнений у текстовому полі. Я намагався замінити "на \", але це те, що я отримую.

<input type='text' id='abc' value='hel\'lo'>

Результатом для наведеного вище коду є "hel \", заповнений у текстовому полі.

Як я можу успішно уникнути єдиних цитат?


Гей, Раві, це більше питання html. Я позначав це питання як HTML, але ви, можливо, захочете змінити це у своєму питанні.
Бенджамін Маннс

Відповіді:


358

Ви можете використовувати HTML-об’єкти:

  • &#39; для '
  • &#34; для "
  • ...

Щоб отримати додаткові відомості, ви можете ознайомитись із посиланнями сутності символів у HTML .


39
Чому варто використовувати подвійні лапки для значень атрибутів?
Gumbo

5
@Pascal MARTIN: XML також дозволяє одиничні лапки для значень атрибутів. (Див. W3.org/TR/xml/#NT-AttValue )
Gumbo

4
@Gumbo: wooo! Я не думаю, що я ніколи не бачив жодного документа XML, який використовував значення атрибутів arround з однією лапкою; тому я не вважав, що це насправді дійсно ;; Я просто (ще раз) щось дізнався, відповідаючи на запитання; тож, дякую за ці коментарі!
Паскаль МАРТИН

5
Я знаю, що це давнє, але я думаю, що варто зазначити, що існує HTML-суть для ":&quot;
daiscog

1
@Pascal, валідатор w3c показує, що окремі лапки є дійсними для атрибутів. І побачити stackoverflow.com/questions/2210430 / ...
ChrisJJ

62

Ви можете використовувати &apos;(що iffy в IE) або &#39;(що має працювати скрізь). Для вичерпного списку див. Посилання на іменовані символи W3C HTML5 або таблицю HTML-сутностей на WebPlatform.org .


Ого, минуло вже деякий час, як я написав це. Дякую за те, що ви це зрозуміли - я оновив посилання на дві таблиці на W3C та WebPlatform.org.
Бенджамін Маннс

Вони працюють "скрізь", за винятком атрибутів вираження VXML <var>, де необхідно подальший вихід, оскільки в VXML <var> значення змінної рядка вказується як одиничні лапки в межах звичайних подвійних лапок визначення атрибутів: <var name = "myvar" expr = "'hel \ & apos; lo'" />
Стів Коен

9

Оскільки ви знаходитесь в контексті HTML, вам потрібно використовувати HTML, щоб представити цей символ. А для HTML вам потрібно використовувати числовий посилання символів &#39; ( &#x27;шістнадцятковий):

<input type='text' id='abc' value='hel&#39;lo'>

але я не зрозумів, що ти маєш на увазі context of html?
coding_idiot

@coding_idiot Перегляньте різні маркери, з якими може зіткнутися HTML-аналізатор під час процесу розбору . Кожен стан має різний набір правил розбору, які спрацьовують на основі вхідних даних. Не кожен стан дозволяє посилання на символи. Тепер, якщо ви подивитеся на значення атрибута (цитується окремо) , ви можете побачити, що &позначає початок посилання символів.
Gumbo

7

Представити його як текстову сутність (ASCII 39):

<input type='text' id='abc' value='hel&#39;lo'>



-1

використовувати функції вбудовування javascript: escape і unescape

наприклад

var escapedData = escape("hel'lo");   
output = "%27hel%27lo%27" which can be used in the attribute.

again to read the value from the attr

var unescapedData = unescape("%27hel%27lo%27")
output = "'hel'lo'"

Це буде корисно, якщо у вас є величезні дані про json-стрифіку, які будуть використані в атрибуті


escapeне є безпечним для unicode. Специфікація не рекомендує використовувати його.
Квентін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.