Я нашел такие вопросы, как этот, но, к сожалению, ни одно из решений не решило мою проблему.
Вот что я делаю (также пытался с 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
на текстовом поле.
Почему это происходит и как я могу избавиться от этого?
Выполняя быстрый тест, то, что сработало для меня, заключалось в том, чтобы изменить значение замены на объект html. Пример:
var val1=va1.replace(/'/g,"'");
Строка (до установки значения) покажет объект html, но входное значение будет декодированным объектом.
.replace
чтобы заменить на значение\\\'
. Вероятно, вам нужно дважды избежать значения замены.getElementById('theID').value=val1
без замены. Или просто используйте вызовы DOM.