2016-03-01 2 views
-2

Я хочу ограничить поле номера телефона только «цифрами», «+» и «пробелами» или ограничить «A-Z». Я использую JQuery Validate и я попытался:Номер телефона, который разрешает только числа, + и пробелы

jQuery.validator.addMethod("numero", function(value, element) { 
    return this.optional(element) || value == value.match(/^[+1-9 ]*$/); 
}); 

не кажется Однако regex для моих numero правил, чтобы работать правильно.

Мой код:

jQuery(document).ready(function(){ 

    jQuery.validator.addMethod("alpha", function(value, element) { 
     return this.optional(element) || value == value.match(/^[a-zA-Z ]*$/); 
    }); 


    jQuery.validator.addMethod("numero", function(value, element) { 
     return this.optional(element) || value == value.match(/^[+1-9 ]*$/); 
    }); 

    jQuery('.upsale-form').each(function() { 
     jQuery(this).validate({ 
      rules: { 
       'Contact.name': { 
        minlength: 3, 
        required: true, 
        alpha: true 
       }, 
       'Contact.email': { 
        required: true, 
        email: true 
       }, 
       'Contact.phone': { 
        minlength: 9, 
        required: true, 
        numero: true 
       } 
      } 
     }); 

    }); 
}); 
+0

не кажется, что будет работать? Проверка полностью нарушена? Ваше регулярное выражение не работает? В противном случае ваш код работает на меня: http://jsfiddle.net/2dx9jkn2/ – Sparky

+0

** ПРИМЕЧАНИЯ **: 1. Вы не ставили методы '.addMethod()' внутри '.each()'. Это просто создание новых правил, которые можно использовать в любом месте и не нужно называть более одного раза на странице. 2. Вы забыли определить сообщения об ошибках для своих пользовательских правил. См.: Http://jsfiddle.net/pqjfxbyt/ – Sparky

+0

Спасибо, я попытался поместить «+4400000000» в поле номера телефона, но его не работает, и если я положу «44 0000 0000», он по-прежнему отображает только цифры «ошибки», во 2-й форме на вашей второй скрипке. Я довольно новичок в этом уровне проверки, поэтому я догадывался об этом, поскольку сообщения нужны, поскольку я не хочу, чтобы они отображались на странице, я использую css для выделения недопустимых полей , –

ответ

1

Я хочу, чтобы ограничить поле номер телефона только 'номера', '+' и 'пространства'

Ваш regex, /^[+1-9 ]*$/, только соответствие от 1 до 9 и отсутствие любых нулей. Вы можете использовать \d для обозначения любой цифры.

So /^[\d+ ]*$/ будет работать.

См: http://jsfiddle.net/pqjfxbyt/1/

Ссылка: regexr.com

1

Может быть, вы хотите "0-9", а не "1-9"?

return this.optional(element) || value == value.match(/^[+0-9 ]*$/); 
0

Попробуйте Regx это поможет Вам ([0-9 + -]) \ ш +

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