2013-02-21 139 views
3

我需要检查页面上的输入字段是否包含字符。jquery检查输入.val()是否包含某些字符

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

我一直是这样的:

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

假设[email protected]一个值,该代码会抛出以下错误:

Object [email protected] has no method 'contains'

所以我做了一些研究和发现。载适用于DOM对象,不建议尝试此操作的字符串:

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

W HICH导致类似的错误:

Object [email protected] has no method '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

这是'indexOf',谨慎的资本。 – Aioros 2013-02-21 09:52:55

回答

3

indexOf不在开始时使用资本I。试试这个:

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

当我忽略这样简单的事情时,我真的很讨厌它......也许是因为我很着急:/非常感谢! – Ortund 2013-02-21 10:09:09

+0

我们都会不时地做,不用担心:) – toomanyredirects 2013-02-21 10:11:12

2

我有一个函数来验证电子邮件中的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 
} 
0

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

试试这个代码片段:

if (($("." + parentname.attr("class") + " #email").val().indexOf("@") !== -1) 
    && ($("." + parentname.attr("class") + " #email").val().indexOf(".") !== -1)) 
{ 
    email = 1; 
} 
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); 
}); 
相关问题