2014-03-29 78 views
0

这是我的代码验证特殊字符不工作

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

    var iChars = "[email protected]#$%^&*()+=-[]\\\';,./{}|\":<>?"; 
    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

iChars不是一个字符范围,它将其视为一个单词。你将需要实现一个正则表达式才能做到这一点。 – brandonscript

+0

@remus你能告诉我如何? – TruePS

回答

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)才把更进一步。

+0

我想要javascript验证,如果你能帮助我请。 – TruePS

+1

*中包含的正则表达式和代码是* javascript,我只是将它包装在jQuery中以向您展示它。请参阅['.test()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test) – brandonscript

+1

并且您将使用'document.getElementById(' ('edit_tagline')。val()'。 – brandonscript