这是我的代码
<!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新手并且从我不知道它工作的地方复制粘贴代码。
如果有人能解释一下这段代码的工作原因那么好心吗?
答案 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)。