验证特殊字符不起作用

时间:2014-03-29 06:20:48

标签: javascript validation

这是我的代码

<!DOCTYPE html>
<html>
<script>
function isSpclChar() {

    var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?";
    if (document.getElementById('edit_tagline').value.indexOf(iChars) != -1) {
        alert("The box has special characters. ");
    } else {
        alert("No special character");
    }
}
</script>
<body>

   <input type="text" id="edit_tagline" onblur="isSpclChar()">

</body>
</html> 

我的第一个问题,为什么此验证不起作用?

我的第二个问题是,任何人都可以向我解释这一行的含义

if(document.getElementById('edit_tagline').value.indexOf(iChars) != -1)

因为我是JavaScript新手并且从我不知道它工作的地方复制粘贴代码。

如果有人能解释一下这段代码的工作原因那么好心吗?

1 个答案:

答案 0 :(得分:1)

iChars不是一个角色范围,它将它视为一个单词。为了做到这一点,你需要实现一个正则表达式。

这是javascript中一些验证的工作示例,为了简洁起见利用jQuery。希望你可以在你的环境中使它工作。我冒昧地使用字母字符并否定表达,而不是写出所有潜在的特殊字符(包括unicode范围在内有数百个!)。

$('button').click(function () {
    if (!(/^[a-zA-Z0-9]+$/i).test($('#edit_tagline').val())) {
        alert("The box has special characters. ");
    } else {
        alert("No special character");
    }
});

HTML:

<input type="text" id="edit_tagline">
<button>Test</button>

工作示例:http://jsfiddle.net/remus/9jwGW/

如果您不熟悉正则表达式,那么在进一步了解之前,最好先了解这些表达方式(并查看http://regex101.com)。