2013-02-21 2 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'

Так что я сделал некоторые исследования и обнаружил, что .Contains для объектов DOM, а не строк с предложением попробовать:

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

W акие результаты в подобной ошибке:

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

ответ

3

indexOf не используйте капитал I с самого начала. Попробуйте вместо этого:

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

Мне очень нравится, когда я пропускаю такие простые вещи ... может быть, это потому, что я спешу:/Большое спасибо! – Ortund

+0

Мы все делаем это время от времени, не беспокойтесь :) – toomanyredirects

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); 
}); 
Смежные вопросы