2015-04-26 2 views
0

Я использовал regex для проверки ввода электронной почты. Он выдает предупреждение, когда отправляется неправильный адрес электронной почты (например, без @ или .com), но когда я нажимаю ok для предупреждения, он по-прежнему отправляет электронное письмо на адрес электронной почты, который направлен на страницу send_msg.php, когда это не должно ... Я совершенно новичок в Javascript и PHP, поэтому я все еще участвую. Я знаю, что статья , если должна следовать за еще, но я не знаю, как заставить ее опубликовать электронное письмо, если оно правда. И как я могу заставить его просто отображать сообщение под полем ввода электронной почты вместо того, чтобы поднять предупреждение?Проверка правильности регулярного выражения Javascript

<script> 
function checkEmail(inputvalue){  
var pattern=/^([a-zA-Z0-9_.-])[email protected]([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/; 
if(pattern.test!=(inputvalue)){ 
     alert("Please enter a valid email address"); 
     return false; 


} 

}

<form id="contact-form" name= "form1 "action="send_msg.php" method="post"> 
     <h3>Get in touch</h3> 
     <h4>Fill in the form below, and we'll get back to you within 24 hours.</h4> 
     <div> 
      <label> 
       <span>Name: </span> 
       <input placeholder="Please enter your name" name="name" type="text" tabindex="1" required autofocus> 
      </label> 
     </div> 
     <div> 
      <label> 
       <span>Email: </span> 
       <input placeholder="Please enter your email address" name="email" type="email" tabindex="2" required> 
      </label> 
     </div> 

     <div> 
      <label> 
       <span >Message: </span> 
       <textarea placeholder="Include all the details you can" name="message" tabindex="5" size= "35" maxlength= "255"></textarea> 
      </label> 
     </div> 
     <div> 
      <button name="submit" type="submit" onClick="checkEmail(document.contact-form.email.value)" id="contact-submit">Send Email</button> 
     </div> 
    </form> 
+0

Просто добавьте 'возвращение ложным;' в конце вашего 'if' заявления. – chapay

+0

Для полноты информации [RFC 5322] (https://tools.ietf.org/html/rfc5322#section-3.4.1) разрешено использовать «+» в адресах электронной почты, например, 'foo + bar @ example.com', ваше текущее регулярное выражение не удастся выполнить это письмо. – Sean

ответ

0

Предполагая, что проверка регулярных выражений в порядке, вы можете предотвратить форма представить, просто делая это:

<form onsubmit="return checkEmail(document.contact-form.email.value);" id="contact-form" name= "form1 "action="send_msg.php" method="post"> 
... 
</form> 

И удалить onClick из отправить кнопку. Если функция regex возвращает true, если она действительна и ложна, если не действительна, то форма будет отправляться только тогда, когда на входе электронной почты имеются достоверные данные.

Надеюсь, что это поможет.

Сообщите мне.

Приветствия!

+0

Я попробовал это, но это все еще не работает .. Он по-прежнему посылает электронную почту .. Я думаю, что проблема заключается в проверке регулярных выражений: \t ' ' – Tia

+0

попробовать этот ответ http://stackoverflow.com/questions/46155/validate-email-address-in-javascript –

0

кажется, что ваша функция имеет ошибку синтаксиса использовать его таким образом

function checkEmail(inputvalue){  
var pattern=/^([a-zA-Z0-9_.-])[email protected]([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/; 
     return pattern.test(inputvalue); 
} 
checkEmail('[email protected]') // false 
checkEmail('[email protected]') // true 
+0

также .. Вы можете упростить regex to '/^([\ w .-]) + @ ([\ w .-]) + \. ([a-zA-Z]) + /' –

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