jQuery / Javascript - многократная проверка RegEx - PullRequest
1 голос
/ 03 июля 2010

Как вы будете проверять 2 разных регулярных выражения в jQuery или JS?

Мой код JS:

function validate(){
    var MyField = document.getElementById('MyField');
    if (MyField.value == null || !MyField.value.toString().match(/^(\d{3})-?\d{2}-?\d{4}$/) || !MyField.value.toString().match(/^(\d{2})-?\d{7}$/));
    alert('Ivalid Entry ...'); 
    return false;
}

Мой HTML:

<form action="">
  <input id="MyFIeld" name="MyField" type="text" />
  <input type="submit" value="Submit" onClick="validate();" />
</form>

В основномего для налогового идентификатора и форматирования SSN правильно.## - ####### или ### - ## - #### ... Я открыт для решений JS или jQuery ... все это очень ценится.

1 Ответ

3 голосов
/ 03 июля 2010

То, что я обычно делаю в подобных случаях, - это «библиотека» тестов регулярных выражений:

var regexTest = function() {
   this.TaxId = /^(\d{2})-?\d{7}$/;
   this.SSN = /^(\d{3})-?\d{2}-?\d{4}$/;
}

Это отделяет ваше регулярное выражение в случае необходимости его изменения по какой-либо причине.Поверьте мне, это будет происходить время от времени.(Может быть, не SSN / TaxId, но это хорошая практика)

Затем я устанавливаю блок событий, аналогичный тому, который у вас есть (jQuery облегчает), чтобы обеспечить мгновенную обратную связь:

$("#MyField").bind("blur keyup",
   function() {
      var myVal = $(this).val(); // should store $(this) in a var instead
      if(regexTest.SSN.test(myVal) || regexTest.TaxId.test(myVal)) {
         $(this).css("background-color", "");
      } else {
         $(this).css("background-color", "#FF0000");
      }
   }
);

Iзнаю, что это не подтверждается при отправке, но обеспечивает обратную связь с пользователем при вводе.(Это не так уж плохо в отношении накладных расходов, если вы просто делаете проверку правильной.) Затем выполните проверку вашей стороны сервера данных (люди могут обойти проверки проверки), и вы должны быть хорошими.Да, это не проверка данных перед отправкой, но если пользователь видит красное поле, он знает, что это неверные данные.

Конечно, есть библиотеки проверки, как отмечено в некоторых комментариях, но мне нравитсяписать свои иногда.;)

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