【发布时间】:2018-04-04 11:24:47
【问题描述】:
我有一个我正在尝试实例化的对象,以便我可以创建它的不同实例,以检查不同的正则表达式模式。
在输入 + 模糊时,输入会根据正则表达式模式是否匹配而获得成功/错误类。
我已经尝试了我可能知道的一切,但它说 “未捕获的 TypeError: ((r.event.special[g.origType] || {}).handle || g.handler).apply 不是函数”
代码示例的链接 = JS Fiddle
这只是原始的js:
$(document).ready(function() {
validate();
function validate() {
var RegexCheck = (function(window, undefined) {
this.check = function check() {
validator = {
email: /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,
text: /^[a-zA-Z ]*$/
};
var isEmpty, pattern, result, elem = this.value;
isEmpty = !elem;
pattern = validator.email;
result = pattern.test(elem);
if (result === false || isEmpty) {
$(this).removeClass('success');
$(this).addClass("error");
} else {
$(this).removeClass('error');
$(this).addClass("success");
}
};
return check;
})(window);
// Instansiate RegexCheck
var RegexCheckEmail = new RegexCheck();
RegexCheckEmail.pattern = validator.email;
console.log("RegexCheckEmail.pattern = " + RegexCheckEmail.pattern);
//Change value of 'pattern'
RegexCheckEmail.pattern = validator.text;
console.log("RegexCheckEmail.pattern = " + RegexCheckEmail.pattern);
//$('form#form1 [type=email]').on('input blur', RegexCheck); //works
$('form#form1 [type=email]').on('input blur', RegexCheckEmail); //doesn't work
console.log(RegexCheckEmail instanceof RegexCheck); //true
var RegexCheckText = new RegexCheck();
RegexCheckText.pattern = validator.text;
console.log("RegexCheckText.pattern = " + RegexCheckText.pattern);
$('form#form-1 [type=text]').on('input blur', RegexCheckText); //Seems like I can instaniate from RegexCheck but just does not seem to work
}
});
【问题讨论】:
-
.on()的第二个参数需要一个函数。 -
这里似乎有很多模式被尝试使用不正确并且是不必要的。为什么不只写你需要的东西来简化代码呢?
-
@SpencerWieczorek 我确实传递了一个函数,来自 object = RegexCheck 和 RegexCheckEmail 的方法
-
@KevinB 不确定退货还能做什么,我认为退货支票是错误的;没关系,我的理解是它正在返回方法。它在我调用主对象时有效,但不适用于主对象的实例化实例。希望这是有道理的。
-
类的实例不是函数。事件绑定应该用它做什么?
标签: javascript jquery oop object instance