BERITA: kami sekarang memiliki komponen Vue kami sendiri!
BERITA: kami sekarang memiliki komponen React kami sendiri! Mainkan dengannya di Buku Cerita.
?️ BERITA: kini kami menyediakan terjemahan dalam lebih dari 30 bahasa! Lihat mereka beraksi.
Input Telepon Internasional adalah plugin JavaScript untuk memasukkan dan memvalidasi nomor telepon internasional. Dibutuhkan kolom input reguler, menambahkan dropdown negara yang dapat dicari, mendeteksi negara pengguna secara otomatis, menampilkan nomor placeholder yang relevan, memformat nomor saat Anda mengetik, dan menyediakan metode validasi yang komprehensif. Komponen React dan Vue juga disertakan.
Jika Anda merasa plugin ini bermanfaat, mohon pertimbangkan untuk mendukung proyek tersebut.
Gunakan API Twilio untuk membuat verifikasi telepon, SMS 2FA, pengingat janji temu, pemberitahuan pemasaran, dan banyak lagi. Kami tidak sabar untuk melihat apa yang Anda bangun.
Kami sekarang menyediakan komponen React dan Vue bersama dengan plugin JavaScript reguler. Readme ini untuk plugin JavaScript. Lihat readme React Component atau readme Vue Component.
Anda dapat melihat demo langsung dan melihat beberapa contoh cara menggunakan berbagai opsi. Alternatifnya, cobalah sendiri dengan mengunduh proyek dan membuka demo.html di browser.
Secara default, pada perangkat seluler kami menampilkan popup layar penuh, bukan dropdown sebaris, untuk memanfaatkan ruang layar yang terbatas dengan lebih baik. Ini mirip dengan cara kerja elemen asli. Anda dapat mengontrol perilaku ini dengan opsi
useFullscreenPopup
. Popup dapat ditutup dengan memilih negara dari daftar atau dengan mengetuk area abu-abu di sampingnya. Lihat contoh (menggunakan komponen React).
krom | Firefox | Safari | Tepian |
---|---|---|---|
✓ | ✓ | v14+ | ✓ |
Catatan: Kami sekarang telah menghentikan dukungan untuk semua versi Internet Explorer karena tidak lagi didukung oleh versi Windows mana pun.
< link rel =" stylesheet " href =" https://cdn.jsdelivr.net/npm/[email protected]/build/css/intlTelInput.css " >
< script src =" https://cdn.jsdelivr.net/npm/[email protected]/build/js/intlTelInput.min.js " > script >
< script >
const input = document . querySelector ( "#phone" ) ;
window . intlTelInput ( input , {
loadUtilsOnInit : "https://cdn.jsdelivr.net/npm/[email protected]/build/js/utils.js" ,
} ) ;
script >
Instal dengan npm: npm install intl-tel-input --save
atau benang: yarn add intl-tel-input
Impor CSS: import 'intl-tel-input/build/css/intlTelInput.css';
Tetapkan jalur ke flags.webp dan globe.webp di CSS Anda, dengan mengganti variabel CSS
. iti {
--iti-path-flags-1x : url ( 'path/to/flags.webp' );
--iti-path-flags-2x : url ( 'path/to/[email protected]' );
--iti-path-globe-1x : url ( 'path/to/globe.webp' );
--iti-path-globe-2x : url ( 'path/to/[email protected]' );
}
import intlTelInput from 'intl-tel-input' ;
const input = document . querySelector ( "#phone" ) ;
intlTelInput ( input , {
loadUtilsOnInit : ( ) => import ( "intl-tel-input/utils" )
} ) ;
Kebanyakan bundler (seperti Webpack, Vite, atau Parcel) akan melihat ini dan menempatkan skrip utilitas dalam bundel terpisah dan memuatnya secara asinkron, hanya jika diperlukan. Jika ini tidak berhasil dengan bundler Anda atau Anda ingin memuat modul utils dari lokasi lain (seperti CDN), Anda dapat mengatur opsi loadUtilsOnInit
ke URL yang akan dimuat sebagai string. Misalnya:
import intlTelInput from 'intl-tel-input' ;
const input = document . querySelector ( "#phone" ) ;
intlTelInput ( input , {
loadUtilsOnInit : `https://cdn.jsdelivr.net/npm/intl-tel-input@ ${ intlTelInput . version } /build/js/utils.js` ;
} ) ;
Unduh rilis terbaru, atau lebih baik lagi instal dengan npm
Tambahkan lembar gaya
< link rel =" stylesheet " href =" path/to/intlTelInput.css " >
. iti {
--iti-path-flags-1x : url ( 'path/to/flags.webp' );
--iti-path-flags-2x : url ( 'path/to/[email protected]' );
--iti-path-globe-1x : url ( 'path/to/globe.webp' );
--iti-path-globe-2x : url ( 'path/to/[email protected]' );
}
< script src =" path/to/intlTelInput.js " > script >
< script >
const input = document . querySelector ( "#phone" ) ;
window . intlTelInput ( input , {
loadUtilsOnInit : "path/to/utils.js"
} ) ;
script >
Kami sangat menyarankan Anda memuat utils.js yang disertakan, yang memungkinkan pemformatan dan validasi, dll. Kemudian plugin dibuat untuk selalu menangani angka dalam format internasional lengkap (misalnya "+17024181234") dan mengonversinya sesuai - bahkan ketika nationalMode
atau separateDialCode
diaktifkan. Kami menyarankan Anda mendapatkan, menyimpan, dan menyetel nomor secara eksklusif dalam format ini untuk kesederhanaan - sehingga Anda tidak perlu berurusan dengan penanganan kode negara secara terpisah, karena nomor internasional lengkap menyertakan informasi kode negara.
Anda selalu bisa mendapatkan nomor internasional lengkap (termasuk kode negara) menggunakan getNumber
, lalu Anda hanya perlu menyimpan satu string tersebut di database Anda (Anda tidak perlu menyimpan negara secara terpisah), dan kemudian saat berikutnya Anda menginisialisasi plugin dengan memasukkan nomor tersebut, maka secara otomatis akan mengatur negara dan memformatnya sesuai dengan pilihan yang Anda tentukan (misalnya ketika menggunakan nationalMode
maka secara otomatis akan menampilkan nomor dalam format nasional, menghilangkan kode panggil internasional).
Jika Anda mengetahui negara pengguna, Anda dapat menyetelnya dengan initialCountry
(misalnya "us"
untuk Amerika Serikat), dan jika tidak, kami sarankan menyetel initialCountry
ke "auto"
(bersama dengan opsi geoIpLookup
) untuk menentukan negara pengguna negara berdasarkan alamat IP mereka - lihat contoh.
Jika Anda mengetahui bahasa pengguna, Anda dapat menggunakan terjemahan yang disertakan untuk melokalisasi nama negara (dll) - lihat contoh.
Saat Anda menginisialisasi plugin, argumen pertama adalah elemen input, dan argumen kedua adalah objek yang berisi opsi inisialisasi yang Anda inginkan, yang dirinci di bawah. Catatan: opsi apa pun yang menggunakan kode negara harus berupa kode ISO 3166-1 alpha-2.
izinkan Dropdown
Tipe: Boolean
Default: true
Apakah mengizinkan dropdown atau tidak. Jika dinonaktifkan, tidak ada panah tarik-turun, dan negara yang dipilih tidak dapat diklik. Selain itu, jika showFlags diaktifkan, kami akan menampilkan bendera yang dipilih di sebelah kanan karena itu hanyalah penanda negara. Perhatikan bahwa jika separateDialCode
diaktifkan, allowDropdown
akan dipaksa menjadi true
karena dropdown diperlukan saat pengguna mengetik "+" dalam kasus ini. Mainkan opsi ini di Storybook (menggunakan komponen React).
placeholder otomatis
Tipe: String
Default: "polite"
Atur placeholder masukan ke nomor contoh untuk negara yang dipilih, dan perbarui jika negara berubah. Anda dapat menentukan tipe nomor menggunakan opsi placeholderNumberType
. Secara default, ini disetel ke "polite"
, yang berarti ia hanya akan menyetel placeholder jika inputnya belum memilikinya. Anda juga dapat menyetelnya ke "aggressive"
, yang akan menggantikan placeholder yang ada, atau "off"
. Membutuhkan skrip utils untuk dimuat.
kelas kontainer pesanan negara pencarian negara Placeholder khusus dropdownContainer kecualikan Negara perbaikiDropdownWidth formatAsYouType formatPada Tampilan pencarian geoIp Berikut ini contoh penggunaan layanan ipapi: Perhatikan bahwa callback masukan tersembunyi * Catatan : Fitur ini mengharuskan input berada di dalam elemen Ini akan menghasilkan elemen (tersembunyi) berikut, yang akan terisi secara otomatis saat dikirimkan: i18n Jika saat ini kami tidak mendukung bahasa yang Anda perlukan, Anda dapat berkontribusi sendiri dengan mudah - Anda hanya perlu menyediakan beberapa string terjemahan UI, karena kami secara otomatis mengambil nama negara dari proyek daftar negara. Opsi 1: impor salah satu modul terjemahan yang disediakan Opsi 2: tentukan terjemahan khusus Anda sendiri Negara awal loadUtilsOnInit (lihat diskusi v25) Ini adalah salah satu cara untuk (malas) memuat utils.js yang disertakan (untuk mengaktifkan pemformatan/validasi, dll) - lihat Memuat Skrip Utilitas untuk opsi lebih lanjut. Anda perlu menghosting file utils.js, lalu menyetel opsi Atau, ini bisa berupa fungsi yang mengembalikan janji untuk modul utils. Saat menggunakan bundler seperti Webpack, ini dapat digunakan untuk memberi tahu bundler bahwa skrip utils harus disimpan dalam file terpisah dari kode Anda yang lain. Misalnya: Skrip hanya diambil ketika Anda menginisialisasi plugin, dan sebagai tambahan, hanya ketika halaman telah selesai dimuat (pada peristiwa pemuatan jendela) untuk mencegah pemblokiran (skrip berukuran ~260KB). Saat membuat instance plugin, objek Promise dikembalikan di bawah properti instance Mode nasional hanya Negara placeholderNumberType tampilkan Bendera terpisahDialCode mode ketat gunakan Popup Layar Penuh utilsScript Opsi ini tidak digunakan lagi dan telah diubah namanya menjadi validasiNumberType Dalam contoh ini, menghancurkan dapatkanEkstensi Mengembalikan string misalnya jika nilai inputnya adalah dapatkanNomor Mengembalikan string misalnya dapatkanNumberType Mengembalikan bilangan bulat, yang dapat Anda cocokkan dengan berbagai opsi di enum Perhatikan bahwa di AS tidak ada cara untuk membedakan antara nomor telepon tetap dan nomor seluler, jadi nomor tersebut akan mengembalikan dapatkanSelectedCountryData Mengembalikan sesuatu seperti ini: dapatkanValidationError Mengembalikan bilangan bulat, yang dapat Anda cocokkan dengan berbagai opsi di enum adalahValidNumber Pengembalian: isValidNumberPrecise Pengembalian: setNegara setNomor setPlaceholderNumberType setDisabled dapatkanDataNegara Mengembalikan array objek negara: dapatkanInstance loadUtils (lihat diskusi v25) Anda dapat mendengarkan kejadian berikut yang dipicu pada elemen input. perubahan negara Lihat contohnya di sini: Sinkronisasi negara buka: tarik-turun negara tutup: tarik-turun negara Ada banyak variabel CSS yang tersedia untuk tema. Lihat intlTelInput.scss untuk daftar lengkapnya. Sedangkan untuk keadaan kosong (ikon bola dunia), versi defaultnya berwarna abu-abu tua, dan kami juga menyediakan versi "terang", yang akan berfungsi lebih baik dengan tema gelap. Alternatifnya, mudah untuk membuat ulang ikon globe dalam warna apa pun yang Anda perlukan untuk tema Anda. Kami menyarankan Anda mengunduhnya dalam resolusi setinggi mungkin, lalu memperkecil gambar ke ukuran yang diperlukan (lebar 20 piksel untuk versi default dan lebar 40 piksel untuk versi @2x). Contoh mode gelap (dengan tangkapan layar di bawah): CATATAN: ini mengasumsikan Anda sudah memiliki gaya mode gelap Anda sendiri untuk gaya bodi/input secara umum, misalnya seperti ini: Contoh: Kami menyediakan terjemahan untuk 200+ nama negara, serta teks antarmuka pengguna lainnya (misalnya teks placeholder untuk masukan pencarian negara) dalam lebih dari 30 bahasa. Lihat opsi Bahasa yang didukung: Arab, Bengali, Bosnia, Bulgaria, Katalan, China, Kroasia, Ceko, Denmark, Belanda, Norwegia, Inggris, Farsi, Finlandia, Prancis, Jerman, Yunani, Hindi, Hongaria, Indonesia, Italia, Jepang, Korea, Marathi , Polandia, Portugis, Rumania, Rusia, Slovakia, Spanyol, Swedia, Telugu, Thailand, Turki, Urdu, Vietnam. Jika saat ini kami tidak mendukung bahasa yang Anda perlukan, Anda dapat berkontribusi sendiri dengan mudah - Anda hanya perlu menyediakan beberapa string terjemahan UI, karena kami secara otomatis mengambil nama negara dari proyek daftar negara. Skrip utilitas (build/js/utils.js) adalah versi kustom dari libphonenumber Google yang mengaktifkan fitur berikut: Pemformatan/validasi nomor internasional sulit dilakukan (bervariasi menurut negara/distrik, dan saat ini kami mendukung ~230 negara). Satu-satunya solusi komprehensif yang kami temukan adalah libphonenumber, yang darinya kami telah mengkompilasi bagian-bagian yang relevan ke dalam satu file JavaScript, yang disertakan dalam direktori build. Sayangnya, bahkan setelah dimodifikasi, ukurannya masih ~260KB. Lihat bagian di bawah tentang cara terbaik untuk memuatnya. Untuk mengkompilasi ulang skrip utils sendiri (misalnya untuk memperbarui versi libphonenumber pembuatnya), lihat panduan berkontribusi. Lihat diskusi v25. Skrip utils menyediakan banyak fungsionalitas hebat (lihat bagian di atas), tetapi menyebabkan peningkatan ukuran file (~260KB). Ada dua cara utama untuk memuat skrip utils, bergantung pada apakah Anda mengkhawatirkan ukuran file atau tidak. Opsi 1: intlTelInputWithUtils Opsi 2: memuatUtilsOnInit Alternatifnya, Anda dapat mengatur opsi Jika Anda ingin lebih mengontrol kapan file ini lambat dimuat, Anda dapat memanggil metode statis Masukan lebar penuh dropdownContainer: dropdown tidak menutup saat gulir Margin masukan Menampilkan pesan kesalahan Posisi tarik-turun Penampung Grup masukan bootstrap Lihat panduan berkontribusi untuk instruksi menyiapkan proyek dan membuat perubahan, dan juga tentang cara memperbarui libphonenumber ke versi baru, cara memperbarui gambar bendera, atau cara menambahkan terjemahan baru. Pengujian pengguna didukung oleh Program Sumber Terbuka BrowserStack Pengujian browser melalui
Jenis: String
Default: ""
Kelas tambahan untuk ditambahkan ke pembungkus (disuntikkan)
Tipe: Array
Default: null
Tentukan urutan daftar negara dengan serangkaian kode negara iso2. Negara apa pun yang dihilangkan akan muncul setelah negara yang ditentukan, misalnya menyetel countryOrder
ke ["jp", "kr"]
akan menghasilkan daftar: Jepang, Korea Selatan, Afganistan, Albania, Aljazair, dll...
Tipe: Boolean
Default: true
Tambahkan input pencarian ke bagian atas dropdown, sehingga pengguna dapat memfilter negara yang ditampilkan.
Jenis: Function
Default: null
Ubah placeholder yang dihasilkan oleh autoPlaceholder. Harus mengembalikan string. intlTelInput ( input , {
customPlaceholder : function ( selectedCountryPlaceholder , selectedCountryData ) {
return "e.g. " + selectedCountryPlaceholder ;
} ,
} ) ;
Jenis: Node
Default: null
Mengharapkan sebuah simpul misalnya document.body
. Daripada menempatkan markup tarik-turun negara di sebelah masukan, tambahkan markup tersebut ke node yang ditentukan, dan kemudian akan diposisikan di sebelah masukan menggunakan JavaScript (menggunakan position: fixed
). Ini berguna ketika input berada di dalam wadah dengan overflow: hidden
. Perhatikan bahwa pemosisiannya dipecah dengan menggulir, sehingga dropdown akan ditutup secara otomatis pada acara gulir window
.
Jenis: Array
Default: []
Di tarik-turun, tampilkan semua negara kecuali negara yang Anda tentukan di sini. Mainkan opsi ini di Storybook (menggunakan komponen React).
Tipe: Boolean
Default: true
Perbaiki lebar dropdown ke lebar masukan (bukan selebar nama negara terpanjang). Mainkan opsi ini di Storybook (menggunakan komponen React).
Tipe: Boolean
Default: true
Secara otomatis memformat nomor saat pengguna mengetik. Fitur ini akan dinonaktifkan jika pengguna mengetikkan karakter pemformatannya sendiri. Membutuhkan skrip utils untuk dimuat.
Tipe: Boolean
Default: true
Format nilai input (sesuai dengan opsi nationalMode
) selama inisialisasi, dan pada setNumber
. Membutuhkan skrip utils untuk dimuat.
Jenis: Function
Default: null
Saat mengatur initialCountry
ke "auto"
, Anda harus menggunakan opsi ini untuk menentukan fungsi khusus yang memanggil layanan pencarian IP untuk mendapatkan lokasi pengguna dan kemudian memanggil panggilan balik success
dengan kode negara yang relevan. Perhatikan juga bahwa saat membuat instance plugin, objek Promise dikembalikan di bawah properti instance promise
, sehingga Anda dapat melakukan sesuatu seperti iti.promise.then(...)
untuk mengetahui kapan permintaan inisialisasi seperti ini telah selesai. intlTelInput ( input , {
initialCountry : "auto" ,
geoIpLookup : function ( success , failure ) {
fetch ( "https://ipapi.co/json" )
. then ( function ( res ) { return res . json ( ) ; } )
. then ( function ( data ) { success ( data . country_code ) ; } )
. catch ( function ( ) { failure ( ) ; } ) ;
}
} ) ;
failure
harus dipanggil jika terjadi kesalahan, oleh karena itu gunakan catch()
dalam contoh ini. Tip: simpan hasilnya dalam cookie untuk menghindari pencarian berulang!
Jenis: Function
Default: null
Memungkinkan pembuatan kolom masukan tersembunyi dalam formulir untuk menyimpan nomor telepon internasional lengkap dan kode negara yang dipilih. Ia menerima fungsi yang menerima nama input telepon utama sebagai argumen. Fungsi ini harus mengembalikan objek dengan properti phone
dan (opsional) country
untuk menentukan nama input tersembunyi untuk nomor telepon dan kode negara. Hal ini berguna untuk pengiriman formulir non-Ajax untuk memastikan nomor internasional dan kode negara lengkap terekam, terutama ketika nationalMode
diaktifkan. , karena fitur ini mendengarkan event
submit
pada elemen form terdekat. Perhatikan juga bahwa karena ini menggunakan getNumber
secara internal, pertama-tama skrip utils harus dimuat, dan kedua ia mengharapkan nomor yang valid sehingga hanya akan berfungsi dengan benar jika Anda telah menggunakan isValidNumber
untuk memvalidasi nomor sebelum mengizinkan pengiriman formulir untuk dilalui. intlTelInput ( input , {
hiddenInput : function ( telInputName ) {
return {
phone : "phone_full" ,
country : "country_code"
} ;
}
} ) ;
< input type =" hidden " name =" phone_full " >
< input type =" hidden " name =" country_code " >
Tipe: Default Object
: {}
Izinkan pelokalan/penyesuaian 200+ nama negara, serta teks antarmuka pengguna lainnya (misalnya teks placeholder untuk input pencarian negara). Cara termudah untuk melakukan ini adalah dengan mengimpor salah satu modul terjemahan yang disediakan dan mengatur i18n
ke nilai tersebut (lihat opsi 1 di bawah). Anda juga dapat mengganti satu atau lebih kunci individual dengan cara ini (lihat opsi 1 di bawah). Alternatifnya, Anda dapat menyediakan terjemahan khusus Anda sendiri (lihat opsi 2 di bawah). Jika menyediakan nama Anda sendiri, Anda perlu menentukan semua nama negara (yang dapat disalin dari proyek daftar negara, misalnya berikut adalah nama negara dalam bahasa Prancis), serta beberapa string UI (tercantum di bawah). Lihat contoh. import { fr } from "intl-tel-input/i18n" ;
intlTelInput ( input , {
i18n : fr ,
} ) ;
// or to override one or more keys, you could do something like this
intlTelInput ( input , {
i18n : {
... fr ,
searchPlaceholder : "Recherche de pays" ,
} ,
} ) ;
intlTelInput ( input , {
i18n : {
// Country names - see the full list in src/js/intl-tel-input/i18n/en/countries.ts
af : "Afghanistan" ,
al : "Albania" ,
dz : "Algeria" ,
as : "American Samoa" ,
ad : "Andorra" ,
...
// Aria label for the selected country element
selectedCountryAriaLabel : "Selected country" ,
// Screen reader text for when no country is selected
noCountrySelected : "No country selected" ,
// Aria label for the country list element
countryListAriaLabel : "List of countries" ,
// Placeholder for the search input in the dropdown
searchPlaceholder : "Search" ,
// Screen reader text for when the search produces no results
zeroSearchResults : "No results found" ,
// Screen reader text for when the search produces 1 result
oneSearchResult : "1 result found" ,
// Screen reader text for when the search produces multiple results
multipleSearchResults : "${count} results found" ,
}
} ) ;
Jenis: String
Default: ""
Atur pilihan negara awal dengan menentukan kode negaranya misalnya "us"
untuk Amerika Serikat. (Berhati-hatilah untuk tidak melakukan hal ini kecuali Anda yakin dengan negara pengguna, karena dapat menyebabkan masalah rumit jika pengaturannya salah dan pengguna secara otomatis mengisi nomor nasionalnya dan mengirimkan formulir tanpa memeriksa - dalam kasus tertentu, hal ini dapat lolos validasi dan Anda bisa saja menyimpan nomor dengan kode panggil yang salah). Anda juga dapat menyetel initialCountry
ke "auto"
, yang akan mencari negara pengguna berdasarkan alamat IP mereka (memerlukan opsi geoIpLookup
- lihat contoh). Perhatikan bahwa bagaimanapun Anda menggunakan initialCountry
, pilihan negara tidak akan diperbarui jika input sudah berisi nomor dengan kode panggil internasional.
Ketik: String
atau () => Promise
Default: ""
Contoh: "/build/js/utils.js"
loadUtilsOnInit
ke URL tersebut, atau sebagai alternatif, arahkan saja ke versi yang dihosting CDN, misalnya "https://cdn.jsdelivr.net/npm/[email protected]/build/js/utils.js"
. Skrip dimuat melalui pernyataan impor dinamis, yang berarti URL tidak boleh relatif - harus absolut.{ loadUtilsOnInit: () => import("intl-tel-input/utils") }
.promise
, sehingga Anda dapat melakukan sesuatu seperti iti.promise.then(callback)
untuk mengetahui kapan permintaan inisialisasi seperti ini telah selesai. Lihat Skrip Utilitas untuk informasi lebih lanjut.
Tipe: Boolean
Default: true
Format angka dalam format nasional, bukan format internasional. Hal ini berlaku untuk nomor placeholder, dan saat menampilkan nomor pengguna yang ada. Perhatikan bahwa pengguna boleh mengetikkan nomor mereka dalam format nasional - selama mereka memilih negara yang tepat, Anda dapat menggunakan getNumber
untuk mengekstrak nomor internasional lengkap - lihat contoh. Disarankan untuk membiarkan opsi ini tetap aktif, untuk mendorong pengguna memasukkan nomor telepon mereka dalam format nasional karena format ini biasanya lebih familiar bagi mereka sehingga menciptakan pengalaman pengguna yang lebih baik.
Jenis: Array
Default: []
Di dropdown, tampilkan hanya negara yang Anda tentukan - lihat contoh.
Jenis: String
Default: "MOBILE"
Tentukan salah satu kunci dari enum intlTelInput.utils.numberType
(misalnya "FIXED_LINE"
) untuk mengatur tipe nomor yang akan digunakan sebagai placeholder. Mainkan opsi ini di Storybook (menggunakan komponen React).
Tipe: Boolean
Default: true
Atur ini ke false untuk menyembunyikan bendera, misalnya karena alasan politik. Sebaliknya, ini akan menampilkan ikon globe umum. Mainkan opsi ini di Storybook (menggunakan komponen React).
Tipe: Boolean
Default: false
Tampilkan kode panggilan internasional negara yang dipilih di sebelah masukan, sehingga terlihat seperti bagian dari nomor yang diketik. Karena pengguna tidak dapat mengedit kode panggil yang ditampilkan, mereka mungkin mencoba mengetikkan yang baru - dalam hal ini, untuk menghindari dua kode panggil yang bersebelahan, kami secara otomatis membuka dropdown negara dan memasukkan kode panggil baru ke dalam masukan pencarian alih-alih. Jadi jika mereka mengetik +54, maka Argentina akan disorot di dropdown dan mereka cukup menekan Enter untuk memilihnya, memperbarui kode panggil yang ditampilkan (fitur ini memerlukan allowDropdown
dan countrySearch
diaktifkan). Mainkan opsi ini di Storybook (menggunakan komponen React).
Tipe: Boolean
Default: false
Saat pengguna mengetikkan input, abaikan karakter apa pun yang tidak relevan. Pengguna hanya dapat memasukkan karakter numerik dan tanda plus opsional di awal. Batasi panjangnya pada panjang angka maksimum yang valid (ini sesuai dengan validationNumberType
). Membutuhkan skrip utils untuk dimuat. Lihat contoh.
Tipe: Boolean
Default: true on mobile devices, false otherwise
Kontrol kapan daftar negara muncul sebagai popup layar penuh vs dropdown sebaris. Secara default, ini akan muncul sebagai popup layar penuh di perangkat seluler (berdasarkan agen pengguna dan lebar layar), untuk memanfaatkan ruang terbatas dengan lebih baik (mirip dengan cara kerja asli), dan sebagai dropdown sebaris di perangkat/layar yang lebih besar. Mainkan opsi ini di Storybook (menggunakan komponen React).
Ketik: String
atau () => Promise
Default: ""
Contoh: "/build/js/utils.js"
loadUtilsOnInit
. Silakan lihat detail opsi itu dan gunakan sebagai gantinya.
Jenis: String
Default: "MOBILE"
Tentukan salah satu kunci dari enum intlTelInput.utils.numberType
(misalnya "FIXED_LINE"
) untuk mengatur jenis nomor yang akan diterapkan selama validasi dengan isValidNumber
, serta panjang nomor yang akan diterapkan dengan strictMode
. Setel ke null
untuk tidak menerapkan tipe tertentu. Metode Instans
iti
mengacu pada contoh plugin yang dikembalikan ketika Anda menginisialisasi plugin, misalnya const iti = intlTelInput ( input ) ;
Hapus plugin dari input, dan lepaskan ikatan pendengar acara apa pun. iti . destroy ( ) ;
Dapatkan ekstensi dari nomor saat ini. Membutuhkan skrip utils untuk dimuat. const extension = iti . getExtension ( ) ;
"(702) 555-5555 ext. 1234"
, ini akan mengembalikan "1234"
Dapatkan nomor saat ini dalam format yang diberikan (default pada standar E.164). Berbagai format tersedia di enum intlTelInput.utils.numberFormat
- yang dapat Anda lihat di sini. Membutuhkan skrip utils untuk dimuat. Perhatikan bahwa meskipun nationalMode
diaktifkan, ini masih dapat mengembalikan nomor internasional penuh. Perhatikan juga bahwa metode ini mengharapkan nomor yang valid, sehingga hanya boleh digunakan setelah validasi. const number = iti . getNumber ( ) ;
// or
const number = iti . getNumber ( intlTelInput . utils . numberFormat . E164 ) ;
"+17024181234"
Dapatkan jenis (saluran tetap/ponsel/bebas pulsa, dll) dari nomor saat ini. Membutuhkan skrip utils untuk dimuat. const numberType = iti . getNumberType ( ) ;
intlTelInput.utils.numberType
misalnya if ( numberType === intlTelInput . utils . numberType . MOBILE ) {
// is a mobile number
}
FIXED_LINE_OR_MOBILE
.
Dapatkan data negara untuk negara yang dipilih saat ini. const countryData = iti . getSelectedCountryData ( ) ;
{
name : "Afghanistan" ,
iso2 : "af" ,
dialCode : "93"
}
Dapatkan informasi selengkapnya tentang kesalahan validasi. Membutuhkan skrip utils untuk dimuat. const error = iti . getValidationError ( ) ;
intlTelInput.utils.validationError
misalnya if ( error === intlTelInput . utils . validationError . TOO_SHORT ) {
// the number is too short
}
Periksa apakah nomor saat ini valid berdasarkan panjangnya - lihat contoh, yang seharusnya cukup untuk sebagian besar kasus penggunaan. Lihat isValidNumberPrecise
untuk validasi yang lebih tepat, namun kelebihan isValidNumber
adalah isValidNumber lebih tahan masa depan karena meskipun negara-negara di seluruh dunia memperbarui aturan angka mereka secara rutin, mereka sangat jarang mengubah panjang angkanya. Jika metode ini mengembalikan false
, Anda dapat menggunakan getValidationError
untuk mendapatkan informasi lebih lanjut. Menghargai opsi validationNumberType
(yang diatur ke "MOBILE" secara default). Membutuhkan skrip utils untuk dimuat. const isValid = iti . isValidNumber ( ) ;
true
/ false
Periksa apakah nomor saat ini valid menggunakan aturan pencocokan yang tepat untuk setiap kode negara/area, dll - lihat contoh. Perhatikan bahwa peraturan ini berubah setiap bulan untuk berbagai negara di seluruh dunia, jadi Anda harus berhati-hati untuk selalu memperbarui plugin, jika tidak Anda akan mulai menolak nomor yang valid. Untuk bentuk validasi yang lebih sederhana dan tahan masa depan, lihat isValidNumber
di atas. Jika validasi gagal, Anda dapat menggunakan getValidationError
untuk mendapatkan informasi lebih lanjut. Membutuhkan skrip utils untuk dimuat. const isValid = iti . isValidNumberPrecise ( ) ;
true
/ false
Ubah negara yang dipilih. Jarang sekali, jika pernah, Anda perlu melakukan hal ini, karena negara yang dipilih akan diperbarui secara otomatis saat memanggil setNumber
dan meneruskan nomor yang menyertakan kode sambungan internasional, yang merupakan penggunaan yang disarankan. Perhatikan bahwa Anda dapat menghilangkan argumen kode negara untuk mengatur negara ke keadaan kosong (globe) default. iti . setCountry ( "gb" ) ;
Masukkan nomor, dan perbarui negara yang dipilih. Perhatikan bahwa jika formatOnDisplay
diaktifkan, ini akan mencoba memformat nomor ke format nasional atau internasional sesuai dengan opsi nationalMode
. iti . setNumber ( "+447733123456" ) ;
Ubah opsi placeholderNumberType. iti . setPlaceholderNumberType ( "FIXED_LINE" ) ;
Memperbarui atribut nonaktif pada input telepon dan tombol negara yang dipilih. Menerima nilai boolean. Catatan: kami merekomendasikan penggunaan ini daripada memperbarui atribut input yang dinonaktifkan secara langsung. iti . setDisabled ( true ) ;
Metode Statis
Ambil data negara plugin - baik untuk digunakan kembali di tempat lain misalnya untuk membuat dropdown negara Anda sendiri - lihat contoh, atau sebagai alternatif, Anda dapat menggunakannya untuk mengubah data negara. Perhatikan bahwa modifikasi apa pun harus dilakukan sebelum menginisialisasi plugin. const countryData = intlTelInput . getCountryData ( ) ;
[ {
name : "Afghanistan" ,
iso2 : "af" ,
dialCode : "93"
} , ... ]
Setelah menginisialisasi plugin, Anda selalu dapat mengakses kembali instance menggunakan metode ini, hanya dengan meneruskan elemen input yang relevan. const input = document . querySelector ( '#phone' ) ;
const iti = intlTelInput . getInstance ( input ) ;
iti . isValidNumber ( ) ; // etc
Sebagai alternatif dari opsi loadUtilsOnInit
, metode ini memungkinkan Anda memuat skrip utils.js secara manual sesuai permintaan, untuk mengaktifkan pemformatan/validasi, dll. Lihat Memuat Skrip Utilitas untuk informasi lebih lanjut. Metode ini hanya boleh dipanggil sekali per halaman. Objek Promise dikembalikan sehingga Anda dapat menggunakan loadUtils().then(callback)
untuk mengetahui kapan objek tersebut selesai. // Load from a URL:
intlTelInput . loadUtils ( "/build/js/utils.js" ) ;
// Or manage load via some other method with a function:
intlTelInput . loadUtils ( async ( ) => {
// Your own loading logic here. Return a JavaScript "module" object with
// the utils as the default export.
return { default : { /* a copy of the utils module */ } }
} ) ;
Acara
Hal ini dipicu ketika negara yang dipilih diperbarui misalnya jika pengguna memilih negara dari dropdown, atau mereka mengetikkan kode panggil yang berbeda ke dalam input, atau Anda memanggil setCountry
dll. input . addEventListener ( "countrychange" , function ( ) {
// do something with iti.getSelectedCountryData()
} ) ;
Ini dipicu ketika pengguna membuka dropdown.
Ini dipicu ketika pengguna menutup dropdown. Tema / Mode Gelap
@media ( prefers-color-scheme : dark) {
. iti {
--iti-border-color : # 5b5b5b ;
--iti-dialcode-color : # 999999 ;
--iti-dropdown-bg : # 0d1117 ;
--iti-arrow-color : # aaaaaa ;
--iti-hover-color : # 30363d ;
--iti-path-globe-1x : url ( "path/to/globe_light.webp" );
--iti-path-globe-2x : url ( "path/to/[email protected]" );
}
}
@media ( prefers-color-scheme : dark) {
body , input {
color : white;
background-color : # 0d1117 ;
}
input {
border-color : # 5b5b5b ;
}
input :: placeholder {
color : # 8d96a0 ;
}
}
Terjemahan
i18n
untuk detail tentang cara menggunakannya. Lihat mereka beraksi. Skrip Utilitas
getNumber
dan setNumber
isValidNumber
, getNumberType
dan getValidationError
placeholderNumberType
getNumber
bahkan saat menggunakan opsi nationalMode
Memuat Skrip Utilitas
Jika Anda tidak khawatir tentang ukuran file (misalnya Anda malas memuat skrip ini), hal termudah untuk dilakukan adalah dengan menggunakan bundel lengkap ( /build/js/intlTelInputWithUtils.js
), yang disertakan dengan skrip utils. Skrip ini dapat digunakan persis seperti intlTelInput.js utama - sehingga dapat dimuat langsung ke halaman (yang mendefinisikan window.intlTelInput
seperti biasa), atau dapat diimpor seperti ini: import intlTelInput from "intl-tel-input/intlTelInputWithUtils"
.
Jika Anda mengkhawatirkan ukuran file, Anda dapat memuat skrip utils dengan lambat saat plugin diinisialisasi, menggunakan opsi inisialisasi loadUtilsOnInit
. Anda perlu menghosting file utils.js, lalu menyetel opsi loadUtilsOnInit
ke URL tersebut, atau cukup arahkan ke versi yang dihosting CDN, misalnya "https://cdn.jsdelivr.net/npm/[email protected]/build/js/utils.js"
.loadUtilsOnInit
ke fungsi yang mengembalikan janji untuk skrip utils sebagai objek modul JS. Jika Anda menggunakan bundler seperti Webpack, Vite, atau Parcel untuk membangun aplikasi, Anda dapat menggunakannya seperti ini secara otomatis memisahkan utilitas ke dalam bundel yang berbeda: intlTelInput ( htmlInputElement , {
loadUtilsOnInit : ( ) => import ( "intl-tel-input/utils)
});
loadUtils
secara manual, daripada menggunakan loadUtilsOnInit
. Pemecahan masalah
Jika Anda ingin masukan Anda berukuran penuh, Anda perlu mengatur wadahnya agar sama, yaitu . iti { width : 100 % ; }
Jika Anda memiliki wadah gulir selain window
yang menyebabkan masalah karena tidak menutup dropdown saat gulir, cukup dengarkan acara gulir pada elemen tersebut, dan picu acara gulir di window
, yang pada gilirannya akan menutup dropdown misalnya scrollingElement . addEventListener ( "scroll" , function ( ) {
const e = document . createEvent ( 'Event' ) ;
e . initEvent ( "scroll" , true , true ) ;
window . dispatchEvent ( e ) ;
} ) ;
Demi penyelarasan, CSS default memaksa margin vertikal masukan menjadi 0px
. Jika Anda ingin margin vertikal, Anda harus menambahkannya ke wadah (dengan kelas iti
).
Jika kode penanganan kesalahan Anda menyisipkan pesan kesalahan sebelum maka tata letaknya akan rusak. Sebaliknya, Anda harus memasukkannya sebelum wadah (dengan kelas
iti
).
Dropdown secara otomatis akan muncul di atas/di bawah input tergantung pada ruang yang tersedia. Agar ini berfungsi dengan baik, Anda hanya perlu menginisialisasi plugin setelah ditambahkan ke DOM.
Untuk mendapatkan placeholder khusus negara secara otomatis, cukup hilangkan atribut placeholder di , atau setel
autoPlaceholder
ke "aggressive"
untuk mengganti placeholder yang ada,
Beberapa perbaikan CSS diperlukan agar plugin berfungsi dengan baik dengan grup input Bootstrap. Anda dapat melihat Codepen di sini.
Catatan: saat ini terdapat bug di Mobile Safari yang menyebabkan crash saat Anda mengklik panah dropdown (segitiga CSS) di dalam grup input. Solusi paling sederhana adalah menghapus segitiga CSS dengan baris ini: . iti__arrow { border : none; }
Berkontribusi
Atribusi