2015-03-25 3 views
0

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

Вот что я делаю (также попытался с json_encode .Didn't работы либо)

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), он отлично работает и показывает ' на l ine, но в text field, я получаю только до apostrophe(exclusive), а остальное снимается.

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

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

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

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

+0

измените ваше '.replace', чтобы заменить на значение' \\\ ''. Вероятно, вам нужно удвоить стоимость замены. –

+0

Или событие лучше, установите innerHTML и следующую строку 'getElementById ('ID'). Value = val1' без замены. Или просто используйте вызовы DOM. –

+0

'\\\ '' не работает. Дает мне 'he \\' и остался удален – Coder

ответ

0

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

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

Строка (до установки значения) будет показывать HTML сущность, но значение входного будет декодированная сущностью.

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