Int'l tel input javascript library returns invalid input even if number is valid

1.1k Views Asked by At

I'm currently using https://github.com/jackocnr/intl-tel-input js library to validate my phone inputs. But unfortunately it always returns the Invalid number error even if the number is active and valid here in our country. Please see my code below for reference.

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="assets/int-tel-input/css/intlTelInput.min.css">
    <style>
        .hide { display: none; }
    </style>
</head>
<body>

    <div class="container">
        <input type="text" id="phone">
        <span id="valid-msg" class="hide">✓ Valid</span>
        <span id="error-msg" class="hide"></span>
    </div>
    
    <script src="assets/jquery.min.js"></script>
    <script src="assets/int-tel-input/js/intlTelInput.min.js"></script>
    <script src="assets/controller.js"></script>
</body>
</html>

controller.js

$(document).ready(function() {

    var input = document.querySelector("#phone"),
      errorMsg = document.querySelector("#error-msg"),
      validMsg = document.querySelector("#valid-msg");

    // here, the index maps to the error code returned from getValidationError - see readme
    var errorMap = ["Invalid number", "Invalid country code", "Too short", "Too long", "Invalid number"];

    // initialise plugin
    var iti = window.intlTelInput(input, {
        initialCountry: "PH",
        onlyCountries: ["ph"],
        separateDialCode: true,
        utilsScript: "assets/int-tel-input/js/utils.js"
    });

    var reset = function() {
      input.classList.remove("error");
      errorMsg.innerHTML = "";
      errorMsg.classList.add("hide");
      validMsg.classList.add("hide");
    };

    // on blur: validate
    input.addEventListener('blur', function() {
      reset();
      if (input.value.trim()) {
        if (iti.isValidNumber()) {
          validMsg.classList.remove("hide");
        } else {
          input.classList.add("error");
          var errorCode = iti.getValidationError();
          errorMsg.innerHTML = errorMap[errorCode];
          console.log(errorCode)
          errorMsg.classList.remove("hide");
        }
      }
    });

    // on keyup / change flag: reset
    input.addEventListener('change', reset);
    input.addEventListener('keyup', reset);

})

Reference: https://intl-tel-input.com/node_modules/intl-tel-input/examples/gen/is-valid-number.html

1

There are 1 best solutions below

0
On

Make sure you are importing the utils script properly:

    var input = document.querySelector('#whatsapp_number');
        iti = window.intlTelInput(input, {
            initialCountry: "ID",
            separateDialCode: true,
            utilsScript: "/assets/plugins/custom/intl-tel-input/js/utils.js" // make sure this script found
        });