2014-01-14 7 views
0

Я использую javascript, чтобы проверить, не поля ли в моей форме. Все отлично работает, оно также проверяет количество символов в поле.Проверьте, содержит ли поле @

Но теперь я хотел бы, чтобы поле электронной почты было проверено, если оно содержит «@» и хотя бы один символ «.». в противном случае он должен дать (то же) сообщение об ошибке.

Я надеюсь, что кто-то может мне помочь!

Fiddle:
http://jsfiddle.net/43vLT/1/

function isValid(fldId,len) { 
var fld = $("#"+fldId); 
var val = fld.val(); 
window.console && console.log(fld,fldId) 
if (val == "" || (len && val.length<len)) { 
    fld.css("borderColor","red"); 
    return false; 
}  
fld.css("borderColor","black"); 
return true; 
} 

$(function() { 
$("form").on("submit",function() { 
var errormessage = []; 

if (!isValid('naam', 10)) { 
    errormessage.push("You forgot to fill in your name "); 
} 
if (!isValid('email')) { 
    errormessage.push("You forgot to fill in your email "); 
} 

if (errormessage.length>0) { 
    window.console && console.log("error present"); 
    $(".error-messages").html(errormessage.join('<br/>')).fadeIn(); 
    return false; 
} 
window.console && console.log("success"); 
return true; 
}); 
}); 
+0

http://stackoverflow.com/questions/46155/validate-email-address-in-javascript – gvee

+1

Значит, вы просто хотите проверить подлинность электронной почты? Можно использовать регулярное выражение: '/^\ s * [\ w \ - \ + _] + (\. [\ W \ - \ + _] +) * \ @ [\ w \ - \ + _] + \. [\ w \ - \ + _] + (\. [\ w \ - \ + _] +) * \ s * $/' – gideonparanoid

ответ

1

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

var str="[email protected]"; 
if(str.indexOf("@")===-1 ||str.indexOf(".")===-1){ 
    alert("Your email address must include one @ sign and one period"); 
} 

W3C использует это регулярное выражение для его <input type="email"/>

/^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-][email protected][a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/ 
+0

благодарим за быстрый ответ! Я ищу, где я должен разместить код в своем JS, не могу найти решение –

+0

Если вы используете HTML5, используйте '' или ' /" ' – scrblnrd3

+0

Извините, что беспокоило вас снова, но вы бы отредактировали его в моей скрипке? Http://jsfiddle.net/43vLT/1/ все еще не может показаться он работает –

1

Ваш лучший выбор для проверки электронной почты будет регулярным выражением. Существует не очень большое регулярное выражение «одноразовое-все-все», которое поймает все допустимые типы электронных писем, так как фактическая спецификация допускает существование довольно интересных адресов, хотя они не очень популярны и широко используются , Вы могли смотреть this guide to regular expressions for matching emails

И в вашем isValid вы можете добавить что-то вроде этого

if ('fldId' === 'email') { 
    return /[email protected]+\..+/.test(val); 
} 

Регулярное выражение /[email protected]+\..+/ просто проверяет на что-нибудь, что имеет некоторые символы, и @, некоторые более символов, точка и некоторые после этого еще больше символов. Это, по сути, самая наивная проверка адресов электронной почты. Вы можете изменить его для некоторых из лучших из ссылки.

Кроме того, вы можете изучить некоторые достоинства html5. input поля с type=email будут автоматически проверяться современными веб-браузерами, и есть неплохие шансы, что они сделают лучшую проверку, чем можно было бы повесить в Интернете.

+0

спасибо за ваш ответ, как вы думаете, у вас есть время, чтобы помочь мне внедрить его в свою скрипку, я не могу заставить это работает? –

Смежные вопросы