2012-06-05 3 views
0

Как создать метод, который проверяет, действительно ли письмо является действительным, если валидатор нашел знак «@»? (входной текст - только имя или адрес электронной почты).jquery formvalidation engine add method

+0

первую очередь всегда делать формы проверки с серверным сценарием –

+0

Вы имеете в виду, если ввод содержит @ то проверить проверку подлинности электронной почты в противном случае проверить правильность имени? –

+0

@PriyankPatel yes your right .. – mrrsb

ответ

3
function checkMail(email){ 
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; 
    if (filter.test(email)) { 
     return true; 
    } 
    return false; 
} 

checkMail('[email protected]'); // return true or false if invalid. 

Это будет проверять адрес электронной почты дополнительно, если действительный домен написан.

меня @ что-то -> недействительный
@ something.com -> недействительный
меня @ .com -> недействительный
[email protected] -> действительный

Regular Expression Library -->

Если вы хотите, чтобы подтвердить адрес электронной почты с JQuery Validation Engine, просто добавьте:

data-validation-engine="validate[required,custom[email]]" 

в поле ввода.


Поскольку форма проверки двигателя 1.6.4, есть возможность добавить свою собственную функцию для проверки: http://www.position-absolute.com/news/form-validation-engine-1-6-4/

Вы можете заменить код в примере с этим, то он должен работать :

<input value="" data-validation-engine="validate[required,funcCall[nameOrMail]]" class="text-input nameOrMail" type="text" name="req" id="req" /> 

JS (К вашему <head>):

jQuery(document).ready(function(){ 
    jQuery("#formID").validationEngine({ 
     "nameOrMail": { 
      "nname":"nameOrMail" 
     } 
    }); 
}); 

function checkMail(email){ 
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; 
    if (filter.test(email)) { 
     return true; 
    } 
    return false; 
} 

function nameOrMail(){ 
    if($(".nameOrMail").val().indexOf('@') >= 0){ 
     if(!checkMail($(".nameOrMail").val())) { 
      return "Please enter a valid mail address or name!"; 
     } 
    } else { 
     if($(".nameOrMail").val() === '') { 
      return "Please enter a valid mail address or name!"; 
     } 
    } 
} 

Живые демо: http://jsfiddle.net/4dUyX/

+0

Im using jQuery.validationEngine http://www.position-relative.net/creation/formValidator/ Как добавить это в formValidator engine? – mrrsb

+0

Я добавил это к своему ответу :) –

+0

[Эта документация] (http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/) довольно хорошо. Там вы найдете множество предопределенных выражений. –

0

Используйте сплит функции, то вам не нужна будет регулярное выражение

<script> 
function check(email){ 
    if (email.split("@").length>0) { 
     return true; 
    } 
    else return false; 
} 

check('[email protected]'); </script>