2017-02-16 96 views
0

У меня есть этот код, где я захватить значение атрибута и загрузить его в форму, заголовок строка может выглядеть примерно так:Экранирование строки, используя JavaScript, прежде чем заселять форму ввода

Добро пожаловать в Америке лучше всего ценят то, что

Но при использовании этой функции побега, строка обрезается на апостроф,

var headline = escape($(this).attr("data-headline")); 

//populate the textbox 
$(e.currentTarget).find('input[name="headline"]').val(headline); 

Я также попытался с помощью решения здесь: HtmlSpecialChars equivalent in Javascript? не повезло.

Как я могу заполнить свой ввод и сохранить кавычки апострофа?

+0

Вы можете просто использовать '$ ('вход [имя = "заголовок"]', e.currentTarget)', чтобы выбрать против выбора и найти. Зачем вам нужно избегать этого в javascript? Просто установка значения не должно вызывать никаких проблем. – Marie

+0

Какой смысл вызывать 'escape' здесь? a) [он не делает] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/escape), что вы думаете, что он делает b) нет необходимости скрывать строку, которая переходит в '.val()'! – Bergi

+0

'escape', кажется, устарел и в основном используется для' URI'', а не для ускорения апострофов. – Kaddath

ответ

0

Просто используйте

$(this).find('input[name="headline"]').val(this.dataset.headline); 

Нет необходимости для любого побега.

Однако обратите внимание, что escape не отключает апострофы, он заменяет их %27. Если ваш текущий код не работает с апострофами в заголовке, убедитесь, что разметка, содержащая атрибут data-headline, должным образом экранирована любым инструментом, создающим ее.

+1

Спасибо за совет, вы были правы в том, чтобы правильно экранировать атрибут. Использование PHP, это работает для меня:. кнопку <класс = 'БТН БТН-первичные' данные-тумблер = 'модальный' данных целевых = '# modal_create_article' данных заголовок = "» htmlspecialchars ($ название, ENT_QUOTES). ''> + – handlethisman

-2
var headline = $(this).attr("data-headline").replace(/'/g, '%27'); 
//populate the textbox 
$(e.currentTarget).find('input[name="headline"]').val(unescape(headline)); 

Если совместимость браузера важна, набор данных доступен только IE11 + https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/dataset#Browser_compatibility

+0

Вы знаете, что 'unescape()' устарел, правильно? Новые версии браузеров могут полностью отказаться от совместимости. –

 Смежные вопросы

  • Нет связанных вопросов^_^