<body>
<select id="cats" size="1">
<option value="1">calico</option>
<option value="2">tortie</option>
<option value="3" selected>siamese</option>
</select> <script type="text/javascript">
<!--
// 编码,此步骤应该在 server 端处理。
var s = escape("tuo'la");
alert(s);
document.getElementById("cats").options.add(new Option(unescape(s)));
//-->
</script>
</body>
若是出現雙引號還是一樣會出錯。
<input name="aaa" type="hidden" value="把值打在这里">
<script language=javascript>
var str=document.getElementById("aaa").value
document.getElementById("cats").options.add(new Option(str,str));
</script>
<textarea name="aaa" style="display:none">把值打在这里</textarea>
<script language=javascript>
var str=document.getElementById("aaa").value
document.getElementById("cats").options.add(new Option(str,str));
</script>
function escape($str) {
preg_match_all("/[\x80-\xff].|[\x01-\x7f]+/",$str,$r);
$ar = $r[0];
foreach($ar as $k=>$v) {
if(ord($v[0]) < 128)
$ar[$k] = rawurlencode($v);
else
$ar[$k] = "%u".bin2hex(iconv("GB2312","UCS-2",$v));
}
return join("",$ar);
}function unescape($str) {
$str = rawurldecode($str);
preg_match_all("/(?:%u.{4})|.+/",$str,$r);
$ar = $r[0];
foreach($ar as $k=>$v) {
if(substr($v,0,2) == "%u" && strlen($v) == 6)
$ar[$k] = iconv("UCS-2","GB2312",pack("H4",substr($v,-4)));
}
return join("",$ar);
}
$str = addslashes($str);
echo("sel.options[$i]=new Option('$str','$str');");