过去40分钟我一直在试图找出原因无效的原因。
所以,我有这个功能来检查电子邮件是否有效
checkEmail: function () { // CHECK IF E-MAIL IS WRONG OR NOT
var check = /^[\w\.\+-]{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,6}$/;
if (!check.test(this.options.email.get('value'))) {
return false
}
return true
},
效果很好!
现在,我需要在验证期间设置error
类来设置输入的样式。为此,我使用了这个:
var s_email = this.options.email.get('value');
if ((s_email == '') || (s_email == this.options.email_text) || (s_email == 'Give me your e-mail') || (!checkEmail())) { // CHECK AND STYLE E-MAIL INPUT FORM
this.options.email.set("class", "error")
} else {
this.options.email.set("class", "success")
}
但是不起作用,即使有有效的电子邮件,也总是给我error
。
答案 0 :(得分:2)
一个问题是在没有上下文对象(值为checkEmail()
)的情况下调用this
:
if (... || (!checkEmail())) {
但是,它希望有一个具有特定结构的那个:
if (!check.test(this.options.email.get('value'))) {
// ^^^^
this
的值是在调用function
而不是如何定义时确定的。但是,您可以使用.call(thisArg)
指定其值,允许您传递当前上下文对象。
if (... || (!checkEmail.call(this))) {