首先,我不是javascript的专家,所以请耐心等待。
我需要创建一个验证,其中不允许用户输入除“ - ”和“_”之外的任何特殊字符(例如:'。','/'和'@'不允许)。
我试过谷歌,我知道我可以使用javascript的REGEX轻松实现这一点。但是,我不允许使用REGEX,所以我需要在不使用REGEX的情况下对其进行编码。
我不想手动验证每个特殊字符,所以请帮帮我。
感谢您的时间。
答案 0 :(得分:3)
所以在这个作业中,你是:
不允许使用正则表达式,
不允许“手动”(无论这意味着)验证每个“特殊字符”(无论这意味着什么)
我认为限制#2意味着您无法将每个字符与特定列表进行比较,例如,在switch
语句中。
第三种方法是将字符代码与有效的范围进行比较。您可以通过charCodeAt(n)
获取字符的字符代码(其中n
是字符串中的索引),并使用>
和<
(或{{1)比较范围}和>=
,或组合)。例如,<=
会测试(x >= 10 && x <= 20)
是否在x
(包括)范围内。
您还可以将字符(而不是字符代码)与范围进行比较,前提是您要非常小心地了解正在发生的事情。因此,例如,如果10-20
包含单字符字符串c
,则表达式"j"
将为true。但是如果(c >= "a" && c <= "z")
包含c
,则该表达式将为false,因为大小写很重要。
有了这个起点,假设你已经被赋予某种“特殊”字符的某种定义,你应该能够编写代码。
答案 1 :(得分:1)
如果您有一组不允许的特定字符,您可以使用JS函数str.indexOf(<invalid character>);
测试它们的存在。如果找不到该字符,它应该返回-1
。
答案 2 :(得分:1)
使用唯一的ID
创建HTML INPUT
元素并获取对它的引用。
您需要检查何时按下某个键。
通过向INPUT
元素添加事件侦听器
如果是不允许的字符,则阻止它显示。
否则允许它。
所以,你的代码将是这样的。
HTML
<input id="myInput" type="text"></input>
的Javascript
// get a reference to my input element
var myInput = document.getElementById('myInput');
// add an event to that element that fires on keypress
myInput.addEventListener('keypress', function (e) {
// get the character from that keypress, make it lower case to reduce the number of checks required.
var char = String.fromCharCode(e.keyCode || e.charCode).toLowerCase();
if(/* not one of these characters */) {
// prevent the character from being displayed
e.preventDefault();
}
}, false);
尝试为自己做一些调查,并发布您尝试过的问题,以及您遇到的问题,但无法解决。所以不是要为你做这项工作,而是在你遇到问题时提供帮助,但是你已经尝试过并且无法正常工作。请务必完全指定代码的期望以及它未执行的操作。如果可能,请提供一个jsFiddle来说明您遇到的问题。