Помощь с проверкой jQuery и ограничением почтового индекса на основе первых трех цифр - PullRequest
0 голосов
/ 18 февраля 2011

Я предполагаю, что мне нужно регулярное выражение здесь?

У меня есть поле почтового индекса, и почтовые индексы должны быть в черте города Чикаго. К счастью, все почтовые индексы начинаются с 606. Поэтому мне нужно опросить ввод, чтобы убедиться, что введенный почтовый индекс состоит из 5 цифр и начинаться с цифр 606:

Мой ввод достаточно прост:

<label for="dzip"><span class="red">&hearts;&nbsp;</span>Zip:</label>
<input name="attributes[address_zip]" id="dzip" type="text" size="30" class="required zip-code" />

И тогда мой сценарий для города был достаточно легким. Мне просто нужно применить его и к почтовому индексу:

    jQuery.validator.addMethod("Chicago", function(value) {
    return value == "Chicago";
}, '**Recipient must reside in Chicago City Limits**');

Может помочь, если я покажу, как работает плагин для телефонных номеров (США). В основном мне нужно перевести это на молнии:

    jQuery.validator.addMethod("phoneUS", function(phone_number, element) {
    phone_number = phone_number.replace(/\s+/g, "");
    return this.optional(element) || phone_number.length > 9 && phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/);
}, "Please specify a valid phone number");

Что эта часть делает / означает?:

phone_number.replace(/\s+/g, "")

Я добавил телефонную часть непосредственно из примера на сайте проверки.

Окончательный ответ от всех великих (и быстрых) отзывов был такой:

    jQuery.validator.addMethod("zip-code", function(zip_code, element) {
    zip_code = zip_code.replace(/\s+/g, "");
    return this.optional(element) || zip_code.length == 5 && zip_code.match(^606[0-9]{2}$);
}, "Please specify a City of Chicago Zip Code");

Ответы [ 3 ]

5 голосов
/ 18 февраля 2011

для длины используйте свойство .length

if($('#dzip').val().length != 5)
  return false;

для 606 используйте метод substr

if($('#dzip').val().substr(0,3) != 606)
  return false;

комбинированный

$('#dzip').change(function(){
  var val = $(this).val();
  if(val.length != 5 || val.substr(0,3) != 606)
    return false; //not valid
  else
  //do stuff here
})

<ч /> Попробуйте это:

jQuery.validator.addMethod("chicago", function(zip, element) {
    zip = zip.replace(/\s+/g, "");
    return this.optional(element) || zip.match("^606[0-9]{2}$");
}, '**Recipient must reside in Chicago City Limits**');

Код выше можно прочитать как

  • Добавить метод Чикаго в валидатор Плагин
  • когда метод вызывается, удалить все пробельные символы
  • тогда, если поле не требуется и оно пустое
  • или, если это необходимо и не пусто, и имеет длину 5 цифр
  • и первые 3 символа - 606
  • вернуть истину
  • иначе вернуть false
0 голосов
/ 18 февраля 2011

вы можете использовать это регулярное выражение "606 [0-9] [0-9]" и посмотреть, может ли оно быть найдено. затем вы проверяете, является ли ввод пятизначным, поскольку я думаю, что это регулярное выражение также будет соответствовать 606111.

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