jackocnr / intl-tel-input

A JavaScript plugin for entering and validating international telephone numbers
https://intl-tel-input.com
MIT License
7.36k stars 1.93k forks source link

Not working with steps.js #853

Closed brentrug closed 5 years ago

brentrug commented 5 years ago

IMPORTANT: please read the New Issue Checklist before creating a new issue: https://github.com/jackocnr/intl-tel-input/wiki/New-Issue-Checklist

Steps to reproduce

  1. Use intl-tel-input inside JQuery Steps (v1.1.0)

Expected behaviour

Dropdown of Flags should work Validation should work Auto. detection of the country, while typing

Actual behaviour

Click on flag and nothing happends Validation does not work No detection of the country, while typing

Initialisation options

var iti = intlTelInput(document.querySelector("#intlTelInput"), { initialCountry: "ch" });

Here is the problem as printscreen: The dropwdown does not work. And also auto. detection of the country does not work, while typing bildschirmfoto 2019-01-12 um 14 41 06

I also implemented this in the "normal" code (outside of steps) and there it works bildschirmfoto 2019-01-12 um 14 41 18

Here is the code from steps.js:

`

Please complete your profile:

        <form name="formProfil" id="formProfil" class="center" method="post" action="http://localhost/sakkadentrainer/run.php">

        <div class="center" style="width: 70%">
            <div class="group">      
                <input id="post_firstname" class="input_username" type="text" value="Beat" required="">
              <span class="highlighter"></span>
              <span class="bar"></span>
              <label>First name *</label>
            </div>

            <div class="group">      
                <input id="post_lastname" class="input_username" type="text" value="Gurtner" required="">
                <span class="highlighter"></span>
                <span class="bar"></span>
                <label>Lastname *</label>
            </div>

            <div class="group">      
                <input id="post_tel" class="input_tel" type="text" value="0796526107" required="">

                <img src="img/icons/faq28.png" height="20" alt="" class="opacity_hover input_help" title="You can enter your telephone number so that we can reach you more easily if, for example, questions arise while using the software! Your data will be stored securely and encrypted on Swiss servers and never passed on to third parties!">

                  <span class="highlighter"></span>
                  <span class="bar"></span>
                  <label>Phone *</label>
            </div>
        </div>
        </form>
  • United States+1
  • United Kingdom+44
  • Afghanistan (‫افغانستان‬‎)+93
  • Albania (Shqipëri)+355
  • Algeria (‫الجزائر‬‎)+213
  • American Samoa+1684
  • Andorra+376
  • Angola+244
  • Anguilla+1264
  • Antigua and Barbuda+1268
  • Argentina+54
  • Armenia (Հայաստան)+374
  • Aruba+297
  • Australia+61
  • Austria (Österreich)+43
  • Azerbaijan (Azərbaycan)+994
  • Bahamas+1242
  • Bahrain (‫البحرين‬‎)+973
  • Bangladesh (বাংলাদেশ)+880
  • Barbados+1246
  • Belarus (Беларусь)+375
  • Belgium (België)+32
  • Belize+501
  • Benin (Bénin)+229
  • Bermuda+1441
  • Bhutan (འབྲུག)+975
  • Bolivia+591
  • Bosnia and Herzegovina (Босна и Херцеговина)+387
  • Botswana+267
  • Brazil (Brasil)+55
  • British Indian Ocean Territory+246
  • British Virgin Islands+1284
  • Brunei+673
  • Bulgaria (България)+359
  • Burkina Faso+226
  • Burundi (Uburundi)+257
  • Cambodia (កម្ពុជា)+855
  • Cameroon (Cameroun)+237
  • Canada+1
  • Cape Verde (Kabu Verdi)+238
  • Caribbean Netherlands+599
  • Cayman Islands+1345
  • Central African Republic (République centrafricaine)+236
  • Chad (Tchad)+235
  • Chile+56
  • China (中国)+86
  • Christmas Island+61
  • Cocos (Keeling) Islands+61
  • Colombia+57
  • Comoros (‫جزر القمر‬‎)+269
  • Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)+243
  • Congo (Republic) (Congo-Brazzaville)+242
  • Cook Islands+682
  • Costa Rica+506
  • Côte d’Ivoire+225
  • Croatia (Hrvatska)+385
  • Cuba+53
  • Curaçao+599
  • Cyprus (Κύπρος)+357
  • Czech Republic (Česká republika)+420
  • Denmark (Danmark)+45
  • Djibouti+253
  • Dominica+1767
  • Dominican Republic (República Dominicana)+1
  • Ecuador+593
  • Egypt (‫مصر‬‎)+20
  • El Salvador+503
  • Equatorial Guinea (Guinea Ecuatorial)+240
  • Eritrea+291
  • Estonia (Eesti)+372
  • Ethiopia+251
  • Falkland Islands (Islas Malvinas)+500
  • Faroe Islands (Føroyar)+298
  • Fiji+679
  • Finland (Suomi)+358
  • France+33
  • French Guiana (Guyane française)+594
  • French Polynesia (Polynésie française)+689
  • Gabon+241
  • Gambia+220
  • Georgia (საქართველო)+995
  • Germany (Deutschland)+49
  • Ghana (Gaana)+233
  • Gibraltar+350
  • Greece (Ελλάδα)+30
  • Greenland (Kalaallit Nunaat)+299
  • Grenada+1473
  • Guadeloupe+590
  • Guam+1671
  • Guatemala+502
  • Guernsey+44
  • Guinea (Guinée)+224
  • Guinea-Bissau (Guiné Bissau)+245
  • Guyana+592
  • Haiti+509
  • Honduras+504
  • Hong Kong (香港)+852
  • Hungary (Magyarország)+36
  • Iceland (Ísland)+354
  • India (भारत)+91
  • Indonesia+62
  • Iran (‫ایران‬‎)+98
  • Iraq (‫العراق‬‎)+964
  • Ireland+353
  • Isle of Man+44
  • Israel (‫ישראל‬‎)+972
  • Italy (Italia)+39
  • Jamaica+1876
  • Japan (日本)+81
  • Jersey+44
  • Jordan (‫الأردن‬‎)+962
  • Kazakhstan (Казахстан)+7
  • Kenya+254
  • Kiribati+686
  • Kosovo+383
  • Kuwait (‫الكويت‬‎)+965
  • Kyrgyzstan (Кыргызстан)+996
  • Laos (ລາວ)+856
  • Latvia (Latvija)+371
  • Lebanon (‫لبنان‬‎)+961
  • Lesotho+266
  • Liberia+231
  • Libya (‫ليبيا‬‎)+218
  • Liechtenstein+423
  • Lithuania (Lietuva)+370
  • Luxembourg+352
  • Macau (澳門)+853
  • Macedonia (FYROM) (Македонија)+389
  • Madagascar (Madagasikara)+261
  • Malawi+265
  • Malaysia+60
  • Maldives+960
  • Mali+223
  • Malta+356
  • Marshall Islands+692
  • Martinique+596
  • Mauritania (‫موريتانيا‬‎)+222
  • Mauritius (Moris)+230
  • Mayotte+262
  • Mexico (México)+52
  • Micronesia+691
  • Moldova (Republica Moldova)+373
  • Monaco+377
  • Mongolia (Монгол)+976
  • Montenegro (Crna Gora)+382
  • Montserrat+1664
  • Morocco (‫المغرب‬‎)+212
  • Mozambique (Moçambique)+258
  • Myanmar (Burma) (မြန်မာ)+95
  • Namibia (Namibië)+264
  • Nauru+674
  • Nepal (नेपाल)+977
  • Netherlands (Nederland)+31
  • New Caledonia (Nouvelle-Calédonie)+687
  • New Zealand+64
  • Nicaragua+505
  • Niger (Nijar)+227
  • Nigeria+234
  • Niue+683
  • Norfolk Island+672
  • North Korea (조선 민주주의 인민 공화국)+850
  • Northern Mariana Islands+1670
  • Norway (Norge)+47
  • Oman (‫عُمان‬‎)+968
  • Pakistan (‫پاکستان‬‎)+92
  • Palau+680
  • Palestine (‫فلسطين‬‎)+970
  • Panama (Panamá)+507
  • Papua New Guinea+675
  • Paraguay+595
  • Peru (Perú)+51
  • Philippines+63
  • Poland (Polska)+48
  • Portugal+351
  • Puerto Rico+1
  • Qatar (‫قطر‬‎)+974
  • Réunion (La Réunion)+262
  • Romania (România)+40
  • Russia (Россия)+7
  • Rwanda+250
  • Saint Barthélemy (Saint-Barthélemy)+590
  • Saint Helena+290
  • Saint Kitts and Nevis+1869
  • Saint Lucia+1758
  • Saint Martin (Saint-Martin (partie française))+590
  • Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)+508
  • Saint Vincent and the Grenadines+1784
  • Samoa+685
  • San Marino+378
  • São Tomé and Príncipe (São Tomé e Príncipe)+239
  • Saudi Arabia (‫المملكة العربية السعودية‬‎)+966
  • Senegal (Sénégal)+221
  • Serbia (Србија)+381
  • Seychelles+248
  • Sierra Leone+232
  • Singapore+65
  • Sint Maarten+1721
  • Slovakia (Slovensko)+421
  • Slovenia (Slovenija)+386
  • Solomon Islands+677
  • Somalia (Soomaaliya)+252
  • South Africa+27
  • South Korea (대한민국)+82
  • South Sudan (‫جنوب السودان‬‎)+211
  • Spain (España)+34
  • Sri Lanka (ශ්‍රී ලංකාව)+94
  • Sudan (‫السودان‬‎)+249
  • Suriname+597
  • Svalbard and Jan Mayen+47
  • Swaziland+268
  • Sweden (Sverige)+46
  • Switzerland (Schweiz)+41
  • Syria (‫سوريا‬‎)+963
  • Taiwan (台灣)+886
  • Tajikistan+992
  • Tanzania+255
  • Thailand (ไทย)+66
  • Timor-Leste+670
  • Togo+228
  • Tokelau+690
  • Tonga+676
  • Trinidad and Tobago+1868
  • Tunisia (‫تونس‬‎)+216
  • Turkey (Türkiye)+90
  • Turkmenistan+993
  • Turks and Caicos Islands+1649
  • Tuvalu+688
  • U.S. Virgin Islands+1340
  • Uganda+256
  • Ukraine (Україна)+380
  • United Arab Emirates (‫الإمارات العربية المتحدة‬‎)+971
  • United Kingdom+44
  • United States+1
  • Uruguay+598
  • Uzbekistan (Oʻzbekiston)+998
  • Vanuatu+678
  • Vatican City (Città del Vaticano)+39
  • Venezuela+58
  • Vietnam (Việt Nam)+84
  • Wallis and Futuna+681
  • Western Sahara (‫الصحراء الغربية‬‎)+212
  • Yemen (‫اليمن‬‎)+967
  • Zambia+260
  • Zimbabwe+263
  • Åland Islands+358
    </section>`

THanks for your help! I really love your plugin and hope we find a solution!

jackocnr commented 5 years ago

If you can find the minimal set of code that reproduces the problem and put that in a CodePen, then I'd be happy to take a look.

brentrug commented 5 years ago

Hey Jack, it was not to easy and its very basic ;) But here we go: https://codepen.io/brentrug/pen/xmQyxx Thanks a lot!

jackocnr commented 5 years ago

I just had a little play and it worked for me if I moved the intlTelInput initialisation to after the steps initialisation.

brentrug commented 5 years ago

Haha... Seriously? Thats too easy ;) But yeah it works! Thanks a lot!

ateequrrahman97 commented 2 years ago

@jackocnr still not working with multi-steps (jQuery steps). I try to initialize after the steps initialization but it does not initialize. Also not working with the jquery validator. Only first country shows. Other functionality did not work.

dustapplications commented 1 year ago

I've fixed my issue by updating the hidden input in jquerySteps onFinished event:

onFinished: function (event, currentIndex){
              $(".phone").each(function() {
                  var input = $(this).data('input'); // Name of hidden element
                  var iti = intlTelInput(this);
                  $("[name='" + input + "']").val(iti.getNumber());
              });
}

Here are my complete code:

HTML:

<div class="wizard pb-5">
    <h3>@lang('Personal Details')</h3>
    <section><div class="col-4">
                 <label for="mobile_number">@lang('Mobile Number') <span class="text-danger" title="@lang('This field is required')">*</span></label><br/>
                <input class="form-control phone" id="mobile_number" data-input="mobile_number" type="text" value="{{ old('mobile_number', $applicationVM->mobile_number ?? $userVM->mobile_number) }}" required/>
                 <br/><label id="mobile_number-error" class="error hide" for="mobile_number">@lang('This field is required').</label>
  </div>
 </section>
</div>

JS

wizard.steps({
            headerTag: "h3",
            bodyTag: "section",
            transitionEffect: "fade",
            onInit: function () {

                $(".phone").each(function() {
                    var initCountry = $(this).val() == "" ? 'mt' : 'auto';
                    var input = $(this).data('input'); // Name of hidden element
                    intlTelInput(this, {
                        separateDialCode: true,
                        hiddenInput: input,
                        initialCountry: initCountry,
                        utilsScript: "https://cdn.jsdelivr.net/npm/intl-tel-input@17.0.3/build/js/utils.js",
                    });
                });
             }, onFinished: function (event, currentIndex){
              $(".phone").each(function() {
                  var input = $(this).data('input'); // Name of hidden element
                  var iti = intlTelInput(this);
                  $("[name='" + input + "']").val(iti.getNumber());
              });
}