JQuery Validator Plugin Phone Validation

前端 未结 3 1663
情歌与酒
情歌与酒 2021-02-10 07:09

I\'m having issues with the jquery validator validating phone numbers. So in a form where I have an input for phone number, I use jquery\'s additional methods to validate the ph

相关标签:
3条回答
  • 2021-02-10 07:42

    Here is a custom validation for phone template:

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

    ex: 123-123-1234

    And here is a format with country prefix :

      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(/^\+[0-9]{11}$/);
      }, "Please specify a valid phone number");
    

    Just add the phoneUS class to the imput ex +41748987145

    This method is an extension for jquery validation. In this way you define your own custom rules. Belive me, there are situations where you need them.

    0 讨论(0)
  • 2021-02-10 07:50

    You are using the phoneUS validation method for the phone number, which accepts both of the inputs below (examples):

    • 949-101-2020
    • 9491012020

    Since the first example is considered valid, you attempt to store it directly into your database, and it seems that you are using an integer or number column. Many databases, including MySQL will attempt to coerce that value into an integer by simply dropping everything after the first non-numeric character. I always recommend using a varchar field for storing phone numbers because the numbers don't really have a numeric meaning (ie you're never going to add/subtract).

    Also, it's a bad idea to simply rely on client side validation. You always want to validate your data on the server side because it's very trivial to trick client side validation (maliciously or not).

    0 讨论(0)
  • 2021-02-10 07:51

    If the database field is holding integers and you're sending stuff like "987-123-1223", depending on your db engine only the first digits will be stored.

    I've had this problem myself already! You can fix it on the server side using simple string replacement methods!

    0 讨论(0)
提交回复
热议问题