Проверка номера телефона JQuery - PullRequest
3 голосов
/ 19 декабря 2011

Я использую плагин проверки jQuery для проверки номера мобильного телефона, и я нахожусь на расстоянии 2/3 пути.

Номер должен:

  • Не быть пустым -Готово,
  • Будьте ровно 11 цифрами - Готово,
  • Начните с '07' - ПОМОГИТЕ !!

Требуемое правило в значительной степени позаботилось о себе и иМне удалось найти длину поля как пользовательский метод, которым кто-то поделился на другом сайте.

Вот код пользовательской длины поля.Может ли кто-нибудь предложить, какой код добавить, где также требовать его, начинаются с '07'?

$.validator.addMethod("phone", function(phone_number, element) {
var digits = "0123456789";
var phoneNumberDelimiters = "()- ext.";
var validWorldPhoneChars = phoneNumberDelimiters + "+";
var minDigitsInIPhoneNumber = 11;
s=stripCharsInBag(phone_number,validWorldPhoneChars);
return this.optional(element) || isInteger(s) && s.length >= minDigitsInIPhoneNumber;
}, "* Your phone number must be 11 digits");

function isInteger(s)
{ var i;
for (i = 0; i < s.length; i++)
{
// Check that current character is number.
var c = s.charAt(i);
if (((c < "0") || (c > "9"))) return false;
}
// All characters are numbers.
return true;
}
function stripCharsInBag(s, bag)
{ var i;
var returnString = "";
// Search through string's characters one by one.
// If character is not in bag, append to returnString.
for (i = 0; i < s.length; i++)
{
// Check that current character isn't whitespace.
var c = s.charAt(i);
if (bag.indexOf(c) == -1) returnString += c;
}
return returnString;
}
$(document).ready(function(){
$("#form").validate();
});

Ответы [ 4 ]

2 голосов
/ 19 декабря 2011

Вы можете использовать эту функцию:

function checkFirstDigits(s, check){
    if(s.substring(0,check.length)==check) return true;
    return false;
}

s будет строкой, а check будет тем, что вы проверяете (то есть «07»).

2 голосов
/ 19 декабря 2011

Код в вопросе кажется очень сложным способом решения этой проблемы.Вы можете проверить длину, префикс и то, что все символы являются цифрами с одним регулярным выражением:

if (!/^07\d{9}$/.test(num)) {
   // "Invalid phone number: must have exactly 11 digits and begin with "07";
}

Объяснение /^07\d{9}$/ - начало строки, за которым следует «07», за которыми следуют ровно 9 цифр, после которых следует конецстроки.

Если вы хотите поместить его в функцию:

function isValidPhoneNumber(num) {
   return /^07\d{9}$/.test(num);
}

Если в будущем вы не хотите проверять префикс, вы можете проверить только числовые цифры и длинус:

/^\d{11}$/
1 голос
/ 20 декабря 2011

Спасибо за все ответы. Мне удалось придумать это, используя регулярное выражение nnnnnn. Он выдает пользовательское сообщение об ошибке при вводе неверного значения и сокращает 35 строк кода до 6!

$.validator.addMethod("phone", function(phone_number, element) { 
  return this.optional(element) || /^07\d{9}$/.test(phone_number); 
}, "* Must be 11 digits and begin with 07");

$(document).ready(function(){
        $("#form").validate();
});

Большое спасибо nnnnnn за регулярное выражение! : D

0 голосов
/ 19 декабря 2011

Использование indexOf():

if (digits.indexOf('07') != 0){
    // the digits string, presumably the number, didn't start with '07'
}

Ссылка:

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