我有下面的代码,我试图检查用户的输入是否在我设置的接受字符之间。'返回false'不会阻止字符出现在输入检查字符串时
代码:
element.onkeypress = function (e) {
var
key = String.fromCharCode(e.which),
isAccepted = (typeof self.acceptedChars === "object") ?
self.acceptedChars.test(key) : /* Check for RegEx */
~self.acceptedChars.indexOf(key), /* Check for String */
isMaxOrLess = self.maxLength > this.value.length;
if (isAccepted && isMaxOrLess) element.dispatchEvent(success);
else if (!isAccepted && isMaxOrLess) element.dispatchEvent(error);
return isAccepted && isMaxOrLess;
};
实施例:
[工作]:如果self.acceptedChars = /[a-z]/
,然后一切都会按预期运行产生以下:
- 输入:
ad12s
- 输出:
ads
[不灵]:如果self.acceptedChars = "abc"
,那么即使只是'a'
,'b'
和'c'
所有字符将被认定为不被接受,出于某种原因,他们可以仍然可以进入。
- 输入:
aabb12
- 输出:
aabb12
- 本来应该是:
aabb
注:自定义事件success
和error
用于显示基于isMaxOrLess
和isAccepted
条件不同的消息,并没有发生关系的问题。
基本上我的问题是,return false
没有出现在acceptedChars
是一个字符串停止字符。我该如何解决这个问题?
代字号在键之前做了什么? '〜key.indexOf' –
在这种情况下,它将**'!= -1 **转换为**'> = 0 ** ** @TamasRev –
@TamasRev它将-1转换为falsy(0),其他值truthy。 –