Побег апостроф не работает

0

Я нашел такие вопросы, как этот, но, к сожалению, ни одно из решений не решило мою проблему.

Вот что я делаю (также пытался с json_encode Не работает тоже)

PHP

$head="<div id='headx'>".htmlspecialchars($headu)."<input type='submit' id='edit_head' value='Edit' onclick='edit_title9(this.id,\"".htmlspecialchars($headu,ENT_QUOTES)."\")'></div>

Javascript

 function edit_title9(ya,va1){

   var divid = document.getElementById(ya).parentNode.id;
   var cola=ya;
   var val1=va1.replace(/'/g,"\'");

   alert(val1);  //works fine

   document.getElementById(divid).innerHTML="<input type='text'  id='taxi1' width='40px' value='"+val1+"' >";
 }

когда я использую alert(val1), он отлично работает и показывает ' на линии", но в text field я получаю только upto apostrophe(exclusive) а остальные удаляются.

Но когда я использую другие символы, он хорошо отображается в text field.

va1.replace(/'/g,"\A");

дает heAs good для he good на текстовом поле.

Почему это происходит и как я могу избавиться от этого?

  • 0
    измените .replace чтобы заменить на значение \\\' . Вероятно, вам нужно дважды избежать значения замены.
  • 0
    Или лучше событие, установите innerHTML и на следующей строке getElementById('theID').value=val1 без замены. Или просто используйте вызовы DOM.
Показать ещё 5 комментариев
Теги:
replace

1 ответ

0
Лучший ответ

Выполняя быстрый тест, то, что сработало для меня, заключалось в том, чтобы изменить значение замены на объект html. Пример:

var val1=va1.replace(/'/g,"&#39;");

Строка (до установки значения) покажет объект html, но входное значение будет декодированным объектом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню