функция проверки электронной почты не работает с элементом [x] при проверке формы javascript - PullRequest
0 голосов
/ 03 апреля 2012

Я добавил эту функцию проверки почты здесь вверху, и я не знаю, как это сделать.Элемент [6], который является полем электронной почты в форме, и я не уверен, что это за оператор

return re.test(email); 

, это полный код скрипта:

<script type="text/javascript">

function validateEmail(email) { 
    var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\
".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA
-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(email);
}   


function validation(form) {
  if(form.elements[3].value == '' ) {
      alert('Please enter your first name');
      form.first_name.focus();
      return false;
  }

  if(form.elements[4].value == '') {
      alert('Please enter your last name');
      form.last_name.focus();
      return false;
  }

  if(form.elements[6].value == '') {
      alert('Please enter your email address');
      form.email.focus();
      return false;

  if (validateEmail(email)) {
    $("#result").text(email + " is a valid email address :)");
    $("#result").css("color", "green");
  } else {
    $("#result").text(email + "is not a valid email address :(");
    $("#result").css("color", "red");
    return false;
  }

  if(form.elements[7].value == '') {
      alert('Please enter your telephone number');
      form.phone.focus();
      return false;
  }

  if(form.elements[17].value == '') {
      alert('Please let us know what you are most interested in');
      form.phone.focus();
      return false;
  }

  if(form.elements[18].value == '') {
      alert('Please enter the area you are most interested in');
      form.phone.focus();
      return false;
  }

  if(form.elements[20].value == '') {
      alert('Please enter the low end of your budget');
      form.phone.focus();
      return false;
  }

  if(form.elements[21].value == '') {
      alert('Please enter the high end of your budget');
      form.phone.focus();
      return false;
  }

  return true;
}
</script>

Ответы [ 4 ]

1 голос
/ 03 апреля 2012

Функция:

function validateEmail(email) { 
    var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\
".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA
-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(email);
}   

имеет объект регулярного выражения (re), объект регулярного выражения использует функцию test, чтобы проверить, проверяется ли сообщение, переданное в функцию, согласно регулярному выражению.функция test возвращает true, если она проверяется как электронная почта, и false, если она не проверяется.

, вы можете использовать ее следующим образом:

if(!validateEmail(form.elements[6].value)) {
  alert('Please enter a valid email address');
  form.email.focus();
  return false;
}

Тестовая функция является нативнойдля регулярного выражения объектов, т. е. ваш браузер будет знать, что с ним делать (спецификации для функции теста: developer.mozilla.org / ru / JavaScript / Reference / Global_Objects / )

0 голосов
/ 03 апреля 2012

Создайте переменную email и установите для нее значение form.elements[6].value

например.

function validation(form) {
  if(form.elements[3].value == '' ) {
    alert('Please enter your first name');
    form.first_name.focus();
    return false;
  }
  //...
  var email = form.elements[6].value
  if (validateEmail(email)) {
    $("#result").text(email + " is a valid email address :)");
    $("#result").css("color", "green");
  } else {
    $("#result").text(email + "is not a valid email address :(");
    $("#result").css("color", "red");
    return false;
  }
 //...
}
0 голосов
/ 03 апреля 2012

form.elements был способ, которым вы выбрали элементы DOM в 1996 году. Вы должны использовать document.getElementById вместо:

var resultElement = $("#result");
var emailVal = document.getElementById('emailBoxId').value;
if (validateEmail(emailVal )) {
    resultElement
      .text(emailVal + " is a valid email address :)")
      .css("color", "green");
} else {
    resultElement
      .text(emailVal + "is not a valid email address :(")
      .css("color", "red");
    return false;
}
0 голосов
/ 03 апреля 2012

Внутри вас validation() переменная функции email, которая передается в validateEmail, в значительной степени не определена.

Вы должны либо:

validateEmail(form.email.value);

ИЛИ

validateEmail($('#email').val()); // considering that `email` field has id="email"

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...