我在JavaScript中动态分配文本框值:
var html = '';
for( var s=0; s++ ; s<10){
html += '<input type="hidden" name="hfstepDescription'+s+'" id="hfstepDescription'+s+'" value="'+ sstepDescriptionHTML +'">';
}
sstepDescriptionHTML的conntent可能会喜欢这个
<input type="hidden" name="hfstepDescription11" id="hfstepDescription11" value="test1 <div class="">context1</div>">
但是当我使用document.getElementById('hfstepDescription11').value
时
我会得到test1 <div class=
,而不是test1 <div class="">context1</div>
如何获得正确的价值 - &gt; test1 <div class="">context1</div>
?
答案 0 :(得分:1)
问题是编码;如果你的值包含封闭值的相同字符,你基本上必须对其进行编码或设置值。
您可以选择两种不同的路径:
第一个选项是在将值插入生成的HTML之前转义该值:
var escapedValue = value.replace(/&/, "&").replace(/\"/, """);
html += "<input type=\"hidden\" name=\"test\" id=\"test\" value=\"" + value + "\"/>";
另一种选择是在将HTML附加到DOM后设置值:
document.getElementById("test").value = value;
答案 1 :(得分:0)
我不确定您在哪里设置sstepDescriptionHTML
,但您确实需要对<input>
的值进行HTML编码。该值只能是双引号之间的任何值,因此它只会返回:test1 <div class=
答案 2 :(得分:0)
您必须使用div中的class属性的单引号替换双引号。
<input type="hidden" name="hfstepDescription11" id="hfstepDescription11" value="test1 <div class=''>context1</div>" />
答案 3 :(得分:0)
我使用escape()来编码文本框的值,并使用下面的PHP代码来解码文本框的值
然后我可以得到正确的值
$ str = uniDecode($ str,'big-5');
function uniDecode($ str,$ charcode){ $ text = preg_replace_callback(“/%u [0-9A-Za-z] {4} /”,toUtf8,$ str); return mb_convert_encoding($ text,$ charcode,'utf-8'); } function toUtf8($ ar){ foreach($ ar as $ val){ $ val = intval(substr($ val,2),16); if($ val&lt; 0x7F){// 0000-007F $ c。= chr($ val); } elseif($ val&lt; 0x800){// 0080-0800 $ c。= chr(0xC0 |($ val / 64)); $ c。= chr(0x80 |($ val%64)); } else {// 0800-FFFF $ c。= chr(0xE0 |(($ val / 64)/ 64)); $ c。= chr(0x80 |(($ val / 64)%64)); $ c。= chr(0x80 |($ val%64)); } } 返回$ c; }
答案 4 :(得分:0)
我使用escape()来编码文本框的值并使用php代码 - http://www.neo.com.tw/archives/000152 - 来解码文本框的值
然后我可以得到正确的值
答案 5 :(得分:0)
您可以使用以下帖子中描述的方法将其转义