Html文本框值包括“”

时间:2009-08-28 02:59:43

标签: javascript html

我在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>

6 个答案:

答案 0 :(得分:1)

问题是编码;如果你的值包含封闭值的相同字符,你基本上必须对其进行编码或设置值。

您可以选择两种不同的路径:

第一个选项是在将值插入生成的HTML之前转义该值:

var escapedValue = value.replace(/&/, "&amp;").replace(/\"/, "&quot;");

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=

查看JavaScript's escape() function

答案 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)

您可以使用以下帖子中描述的方法将其转义

http://hemanshubhojak.com/Home/Post?postId=7