2014-03-23 2 views
-1

У меня есть форма, которую я создал, и я пытаюсь проверить поле электронной почты, чтобы убедиться, что это письмо. И я только хочу, чтобы люди могли вводить адреса электронной почты @ msu.edu. У меня есть сценарий, написанный для проверки электронной почты, но он не работает, и я не знаю, как сделать это там, где можно использовать только @ msu.edu.Проверка электронной почты с помощью js

<form id="contact-form" class="contact-form" method="post" action="" onSubmit="return checkbae()" name="validation"> 
      <div class="form-group row" id="price">     
       <div class="col-lg-4"> 
        <input type="text" name="fname" class="form-control" id="name" placeholder="First *" required > 
       </div> 

       <div class="col-lg-4"> 
        <input type="text" name="lname" class="form-control" id="name" placeholder="Last *" required> 
       </div> 

       <div class="col-lg-4"> 
        <input type="text" name="email" class="form-control" id="name" placeholder="E-mail *" required> 
       </div>     
      </div> 

      </div> 
      <div class="form-group row" align="center"> 
       <div class="col-lg-12" align="center">     
       <button type="submit" class="button default">SEND <i class="glyphicon glyphicon-send"></i></button> 
       </div> 
      </div> 



     </form> 

    <script language="JavaScript1.2"> 


var testresults 
function checkemail(){ 
var str=document.validation.emailcheck.value 
var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i 
if (filter.test(str)) 
testresults=true 
else{ 
alert("Please input a valid email address!") 
testresults=false 
} 
return (testresults) 
} 
</script> 

<script> 
function checkbae(){ 
if (document.layers||document.getElementById||document.all) 
return checkemail() 
else 
return true 
} 
</script> 
+1

[Атрибут заполнитель HTML5 не является заменой элемента этикетки] (http://www.456bereastreet.com/archive/201204/the_html5_placeholder_attribute_is_not_a_substitute_for_the_label_element/) – Quentin

ответ

1

Вы уверены, что ВЫ написали чек-скрипт? ; D

В скрипте вы получаете доступ к полю emailcheck, которого нет в форме.

Решения:

Update

испытано и рабочих.

function checkMail() { var email = document.validation.email.value.toLowerCase(); var suffix = '@msu.edu'; var result = email.indexOf(suffix, email.length - suffix.length) !== -1; alert('Valid email found: ' + result); return result; }

http://jsfiddle.net/du65V/

Обновление 2

Использование RegEx. Также проверено и работает.

function checkMail() { var email = document.validation.email.value.toLowerCase(); var filter = /^([\w-]+(?:\.[\w-]+)*)@msu.edu/i; var result = filter.test(email); alert('Valid email found: ' + result); return result; }

http://jsfiddle.net/du65V/1/

+0

Формулировка из вопрос не утверждает, что ОП написал это. Тестирование окончания строки с этим доменом более уместно, чем тестирование, если строка _contains_ it. Ввод все равно должен быть подтвержден как электронное письмо (с использованием filter_var). – AD7six

+1

Формулировка вопроса подразумевает, что ОП написал это. Тем не менее он содержит существенные ошибки, такие как доступ к несуществующим полям и отсутствие каких-либо точек с запятой. И вот почему «его» сценарий не работает. Итак, ** если ** OP написал это, тогда он легко сможет исправить это, только обратившись к правильному поле '.email.', а не' .emailcheck'. Но да, вы правы. Было бы более целесообразно выполнять все другие проверки. Тем не менее очевидно (для меня), что ОП не писал сценарий, поэтому я хотел бы оставить ему какую-то работу. ;) –

+0

Для меня это тоже очевидно, но «у меня есть сценарий, написанный ниже»! == «Я написал сценарий ниже». Возможно, это было то, что имелось в виду, но это может и не быть. Если вы, по крайней мере, не намекаете на то, что должна быть проверка на стороне сервера (q отмечена php), вы действительно не помогаете оператору, тем более, что ваше предлагаемое решение js примет явно недопустимый ввод, такой как «@ msu.edu ». – AD7six

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