Javascript特殊字符删除不起作用

时间:2012-12-12 11:18:29

标签: javascript jsp

我写了一个jsp代码,其中包含来自其他jsp的值,我需要删除string中的特殊字符。但是我无法删除特殊字符。请帮忙

    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
       <script>
            function change(chars){
                var dchars=document.getElementById("chars").value;
                dchars = dchars.replaceAll("!@#$%^&*()+=[]\\\';,/{}|\":<>?", '');
            document.getElementById("chars").innerHTML=dchars;
            }
        </script>
    </head>
   <%
String res=request.getParameter("tes");
       %>
       <body onload="change(chars)" ><script>
        change(res)
</script>
     <div id="chars"> <%=res%></div>
    </body>
</html>

3 个答案:

答案 0 :(得分:0)

div元素没有“值”。你需要使用innerHtml insted:

document.getElementById('chars').innerHTML = dchars;

答案 1 :(得分:0)

试试这个......

 document.getElementById('chars').innerHTML = dchars; //div has no value..

假设有特殊字符,你的意思是不是字母,这是一个解决方案:

alert(dchars.replace(/[^a-zA-Z ]/g, ""));

OR

alert(dchars.replace(/[^a-z0-9\s]/gi, '')); //will filter the string down to just alphanumeric values

答案 2 :(得分:0)

使用innerHTML的问题是某些字符会自动转换为HTML实体,例如&转换为&amp;

function cleanCharsText(){

    var el = document.getElementById("chars");
    var txt = el.innerText || el.textContent;
    el.innerHTML = txt.replace( /[!@#$%^&*()+=\\[\]\';,/{}\|\":<>\?]/gi, '');
}

但是,如果你的chars元素中有以下<span> text </span>,则在运行上述函数时将删除html span标记,因为我们只提取文本。