4

我需要检查页面上的输入字段是否包含字符。

这是用于非常基本的电子邮件地址验证,所以我只想检查文本是否不为空,是否包含@字符.

我一直在尝试这种方式:

if (($("." + parentname.attr("class") + " #email").val().contains("@")) && ($("." + parentname.attr("class") + " #email").val().contains(".")))
{
    email = 1;
}

假设值为me@this.com,此代码将引发以下错误:

对象 me@this.com 没有方法“包含”

所以我做了一些研究,发现 .contains 是针对 DOM 对象的,而不是用于建议尝试这个的字符串:

if (($("." + parentname.attr("class") + " #email").val().IndexOf("@") != -1) && ($("." + parentname.attr("class") + " #email").val().IndexOf(".") != -1))
{
    email = 1;
}

这会导致类似的错误:

对象 me@this.com 没有方法“IndexOf”

我在这里基本上没有想法,特别是考虑到以下代码在我制作的另一个站点中可以按我的意愿工作:

if ($("#contact-email").val().contains("yahoo.com")) {
    $(".errmsg").text("Domain yahoo.com has been banned due to excessive spam, please use another domain.");
}

谁能建议我可以尝试的任何其他事情,或者更好的是,如何正确地做到这一点?

4

4 回答 4

4

indexOf开头不使用大写字母I。试试这个:

if (($("." + parentname.attr("class") + " #email").val().indexOf("@") != -1) && ($("." + parentname.attr("class") + " #email").val().indexOf(".") != -1))
{
  email = 1;
}
于 2013-02-21T09:55:53.557 回答
3

我有一个在 Javascript 中验证电子邮件的功能:

function isEmail(emailV){
    if(emailV != null && emailV != undefined){
        var pattern = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i);
        return pattern.test(emailV);    
    }
    else{
        return false;
    }

}

它验证电子邮件允许的所有字符,您只需像这样调用它:

if(isEmail($("#contact-email").val())){
   //EMAIL IS VALID
}
else{
   //EMAIL IS NOT VALID
}
于 2013-02-21T09:55:45.950 回答
0

LIVE DEMO

// VISUALIZE ERRORS
function showError(el, err){
    return err ?  $(el).addClass('error') :  $(el).removeClass('error');
}

// REGEXES
var isValidEmailAddress = function( emailAddress ) {
    var pattern = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i);
    return pattern.test(emailAddress);
};

// "EMAIL"
function validate_email( el, val ){
    var err = !isValidEmailAddress( val );
    showError(el, err);
}

$('#email').on('input', function(){
  validate_email( this, this.value );
});
于 2013-02-21T10:09:23.073 回答
0

该方法是indexOf代替IndexOf. 如果你更正你的代码,它应该像一个魅力:)。

试试这个代码片段:

if (($("." + parentname.attr("class") + " #email").val().indexOf("@") !== -1) 
    && ($("." + parentname.attr("class") + " #email").val().indexOf(".") !== -1))
{
    email = 1;
}
于 2013-02-21T09:57:17.453 回答