为什么我的 javascript 中的连字符被替换为“”?

Why my hyphens are replacing with "" in my javascript?

我使用下面的 java 脚本来转义一些字符,例如“<>()'/”和“”。但它也正在取代“-”。谁能告诉我这是怎么回事。

    <td colspan=1><input type="text" id="firstName" name="firstName"  onchange="return escapeSpecialCharacters(this);"
    value="<%=(clientInfo != null) ? escape(clientInfo.getFirstName()) :   ""%>" size="30" maxlength="25"></td>

我的java脚本如下

private String escapeSpecialCharacters(String value) {
    value = value.replace("<","");
    value = value.replace(">","");
    value = value.replace("(","");
    value = value.replace(")","");
    value = value.replace("'","");
    value = value.replace("/","");  
    return value;
}

public String escape(String value) {
    return StringEscapeUtils.escapeHtml(value);
}

我尝试用 'UTF-8' 替换 "ISO-8859-1" 但它对我不起作用..

escapeSpecialCharacters 应该可以正常工作。即使它是作为 Java 方法编写的,相同的代码在 JavaScript 中也应该可以正常工作。下面的示例 html 当您更改文本值时,它会保留 -(连字符)并删除其他符号。

<html>
<head>
    <script>
    function escapeSpecialCharacters(obj) {
        var value = obj.value;
        value = value.replace("<","");
        value = value.replace(">","");
        value = value.replace("(","");
        value = value.replace(")","");
        value = value.replace("'","");
        value = value.replace("/","");
        obj.value = value;
    }
    </script>
</head>
<body>
    <input type="text" id="firstName" name="firstName"  onchange="return escapeSpecialCharacters(this);" size="30" maxlength="25">
</body>
</html>