5

I am trying to implement https://github.com/jackocnr/intl-tel-input with vuejs2.

If I add inside one jQuerydocument.ready, $('#phone').intlTelInput({ options...})

Everything works as expected but when I'm trying to fetch the value of the input field and some boolean valid property, I am always checking the value one step behind.

My checking method looks like:

    validatePhoneNumber: function() {
        var validPhoneNo = $("#phone").intlTelInput("isValidNumber");
        var phoneNo = $("#phone").intlTelInput("getNumber");
        console.log(phoneNo + ' -> ' + validPhoneNo); //this line returns values one step behind
        bus.$emit('validate-phone', validPhoneNo)
    }

The HTML:

<input class="form-control" @keydown="validatePhoneNumber" :class="{validInput: validPhone }" type="text" name="phone" value="" id="phone" :phone_number="phone_number">

I believe the solution would be to create a new directive for this matter, and I tried the following:

Removed the part where I instantiated the intlTelInput on document.ready and made this instead:

Vue.directive('telinput', {
    bind: function(el) {
        $(el).intlTelInput({
            //options here...
    }
});

and added v-telinput to my HTML code above.

with this, nothing seems to work.

What am I missing there?

4
  • Use a wrapper component instead of a directive. vuejs.org/v2/examples/select2.html Commented Mar 14, 2017 at 19:09
  • I did tried that, I got stuck into some other (non-related) issue where I couldn't use the component inside the main element #app... Commented Mar 14, 2017 at 19:12
  • It's a bad idea to use VueJS and jQuery together. Instead you should be looking into something like this that is built for Vue: github.com/EducationLink/vue-tel-input Commented Sep 28, 2018 at 16:57
  • hey, do u fix it?? Commented Aug 7, 2019 at 6:50

1 Answer 1

0

Try to use @keyup instead of @keydown

Sign up to request clarification or add additional context in comments.

1 Comment

Please don't post comments as answers. Once you have enough reputation, you will be able to post comments. From Review

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.