JavaScript - 如果电子邮件错误,则设置类

时间:2014-05-07 15:42:23

标签: javascript validation email

过去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

1 个答案:

答案 0 :(得分:2)

一个问题是在没有上下文对象(值为checkEmail())的情况下调用this

if (... || (!checkEmail())) {

但是,它希望有一个具有特定结构的那个:

if (!check.test(this.options.email.get('value'))) {
//              ^^^^

this的值是在调用function而不是如何定义时确定的。但是,您可以使用.call(thisArg)指定其值,允许您传递当前上下文对象。

if (... || (!checkEmail.call(this))) {