在过去的 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
,即使那里有有效的电子邮件。
最佳答案
一个问题是 checkEmail()
在没有上下文对象(this
的值)的情况下被调用:
if (... || (!checkEmail())) {
但是,它希望有一个具有特定结构的:
if (!check.test(this.options.email.get('value'))) {
// ^^^^
this
的值是在调用 function
时确定的,而不是它的定义方式。但是,您可以使用 .call(thisArg)
指定它的值,允许您传递当前上下文对象。
if (... || (!checkEmail.call(this))) {
关于JavaScript - 如果电子邮件错误则设置类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23522336/