嘿伙计们,我正在考虑如何禁止用户输入一些特殊字符,例如<和>。但我希望他们使用句号,逗号和问号以及惊叹号和引号。我已经提出了这段代码,但它似乎不允许任何特殊字符。:
<script type="text/JavaScript">
function valid(f) {
!(/^[A-zÑñ0-9]*$/i).test(f.value)?f.value = f.value.replace(/[^A-zÑñ0-9]/ig,''):null;
}
</script>
答案 0 :(得分:1)
有几种方法可以做到这一点,它们都不是一个好方法,但我们会做到这一点。
您可以绑定元素上的onkeyup/onkeydown/onkeypress
个事件,并取消已列入黑名单的字符的事件。但这并不能阻止人们将字符粘贴到字段中。
您可以绑定到元素的onchange
事件,并在用户完成输入后从中删除列入黑名单的字符。
javascript中任何类型的消毒都存在这样的问题:对于具有一点技术知识的用户而言,这是一件小事,无论如何都要绕过这些措施并仍然将违规字符上传到服务器。
因此,如果您不想在用户生成的输入中允许使用特殊字符,则应该
>
和<
,例如>
和<
,然后再将它们输出到您网页的任何位置。答案 1 :(得分:1)
试试这个...
var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?";
for (var i = 0; i < document.formname.fieldname.value.length; i++) {
if (iChars.indexOf(document.formname.fieldname.value.charAt(i)) != -1) {
alert ("Your username has special characters. \nThese are not allowed.\n Please remove them and try again.");
return false;
}
}
答案 2 :(得分:0)
为什么不简单地检查“onKeyDown”事件上按下的字符?
<textarea id="foo"></textarea>
<script>
document.getElementById('foo').onkeydown = validate;
function validate(){
var evtobj = window.event? event : e; // IE event or normal event
var unicode = evtobj.charCode? evtobj.charCode : evtobj.keyCode;
var actualkey = String.fromCharCode(unicode);
]
return (/^[A-zÑñ0-9]*$/i).test(actualKey);
</script>
这只是获取被按下的键,如果它是有效的,则返回true,否则为false,这在术语中确定该键是否实际写入textarea中