NEWS: Wir haben jetzt unsere eigene Vue-Komponente!
NEWS: Wir haben jetzt unsere eigene React-Komponente! Spielen Sie damit auf Storybook.
?️ NEUIGKEITEN: Wir bieten jetzt Übersetzungen in über 30 Sprachen an! Sehen Sie sie in Aktion.
International Telephone Input ist ein JavaScript-Plugin zur Eingabe und Validierung internationaler Telefonnummern. Es benötigt ein normales Eingabefeld, fügt ein durchsuchbares Länder-Dropdown-Menü hinzu, erkennt automatisch das Land des Benutzers, zeigt eine relevante Platzhalternummer an, formatiert die Nummer während der Eingabe und bietet umfassende Validierungsmethoden. React- und Vue-Komponenten sind ebenfalls enthalten.
Wenn Sie das Plugin hilfreich finden, denken Sie bitte darüber nach, das Projekt zu unterstützen.
Verwenden Sie die API von Twilio, um Telefonverifizierung, SMS 2FA, Terminerinnerungen, Marketingbenachrichtigungen und vieles mehr zu erstellen. Wir können es kaum erwarten zu sehen, was Sie bauen.
Wir bieten jetzt neben dem regulären JavaScript-Plugin sowohl React- als auch Vue-Komponenten an. Diese Readme-Datei ist für das JavaScript-Plugin. Sehen Sie sich die Readme-Datei zur React-Komponente oder die Readme-Datei zur Vue-Komponente an.
Sie können sich eine Live-Demo ansehen und einige Beispiele für die Verwendung der verschiedenen Optionen sehen. Alternativ können Sie es selbst ausprobieren, indem Sie das Projekt herunterladen und demo.html in einem Browser öffnen.
Standardmäßig zeigen wir auf Mobilgeräten ein Vollbild-Popup anstelle des Inline-Dropdowns an, um den begrenzten Platz auf dem Bildschirm besser zu nutzen. Dies ähnelt der Funktionsweise eines nativen -Elements. Sie können dieses Verhalten mit der Option
useFullscreenPopup
steuern. Das Popup kann geschlossen werden, indem Sie entweder ein Land aus der Liste auswählen oder auf den grauen Bereich an den Seiten tippen. Siehe Beispiel (mit der React-Komponente).
Chrom | Firefox | Safari | Rand |
---|---|---|---|
✓ | ✓ | v14+ | ✓ |
Hinweis: Wir haben die Unterstützung für alle Versionen von Internet Explorer eingestellt, da dieser von keiner Windows-Version mehr unterstützt wird.
< 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 >
Installieren Sie mit npm: npm install intl-tel-input --save
oder Yarn: yarn add intl-tel-input
Importieren Sie das CSS: import 'intl-tel-input/build/css/intlTelInput.css';
Legen Sie den Pfad zu flags.webp und Globe.webp in Ihrem CSS fest, indem Sie die CSS-Variablen überschreiben
. 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" )
} ) ;
Die meisten Bundler (wie Webpack, Vite oder Parcel) erkennen dies, platzieren das Dienstprogramm-Skript in einem separaten Bundle und laden es nur bei Bedarf asynchron. Wenn dies mit Ihrem Bundler nicht funktioniert oder Sie das Utils-Modul von einem anderen Ort (z. B. einem CDN) laden möchten, können Sie die Option loadUtilsOnInit
auf die URL festlegen, von der geladen werden soll, als Zeichenfolge. Zum Beispiel:
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` ;
} ) ;
Laden Sie die neueste Version herunter oder installieren Sie sie besser mit npm
Fügen Sie das Stylesheet hinzu
< 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 >
Wir empfehlen Ihnen dringend, die mitgelieferte utils.js zu laden, die Formatierung und Validierung usw. ermöglicht. Dann ist das Plugin so aufgebaut, dass es immer mit Nummern im vollständigen internationalen Format (z. B. „+17024181234“) umgeht und diese entsprechend konvertiert – auch wenn nationalMode
oder separateDialCode
ist aktiviert. Der Einfachheit halber empfehlen wir Ihnen, Nummern ausschließlich in diesem Format zu erhalten, zu speichern und festzulegen. Dann müssen Sie sich nicht um die separate Verwaltung der Landesvorwahl kümmern, da vollständige internationale Nummern die Informationen zur Landesvorwahl enthalten.
Mit getNumber
können Sie jederzeit die vollständige internationale Nummer (einschließlich Ländervorwahl) abrufen. Dann müssen Sie nur diese eine Zeichenfolge in Ihrer Datenbank speichern (Sie müssen das Land nicht separat speichern) und dann das Plugin das nächste Mal initialisieren Mit dieser Nummer in der Eingabe wird automatisch das Land eingestellt und entsprechend den von Ihnen angegebenen Optionen formatiert (z. B. wird bei Verwendung nationalMode
die Nummer automatisch im nationalen Format angezeigt und die internationale Vorwahl entfernt).
Wenn Sie das Land des Benutzers kennen, können Sie es mit initialCountry
festlegen (z. B. "us"
für die Vereinigten Staaten). Wenn nicht, empfehlen wir, initialCountry
auf "auto"
(zusammen mit der Option geoIpLookup
) zu setzen, um das Land des Benutzers zu ermitteln Land basierend auf ihrer IP-Adresse - siehe Beispiel.
Wenn Sie die Sprache des Benutzers kennen, können Sie die enthaltenen Übersetzungen verwenden, um die Ländernamen (usw.) zu lokalisieren – siehe Beispiel.
Wenn Sie das Plugin initialisieren, ist das erste Argument das Eingabeelement und das zweite ein Objekt, das alle gewünschten Initialisierungsoptionen enthält, die unten detailliert beschrieben werden. Hinweis: Alle Optionen, die Ländercodes akzeptieren, sollten ISO 3166-1 Alpha-2-Codes sein.
AllowDropdown
Typ: Boolean
Standard: true
Ob das Dropdown-Menü zugelassen werden soll oder nicht. Wenn die Option deaktiviert ist, gibt es keinen Dropdown-Pfeil und das ausgewählte Land kann nicht angeklickt werden. Wenn showFlags aktiviert ist, zeigen wir außerdem die ausgewählte Flagge stattdessen rechts an, da es sich lediglich um eine Zustandsmarkierung handelt. Beachten Sie, dass bei aktiviertem separateDialCode
allowDropdown
auf true
gesetzt wird, da die Dropdown-Liste erforderlich ist, wenn der Benutzer in diesem Fall „+“ eingibt. Spielen Sie mit dieser Option im Storybook (mithilfe der React-Komponente).
autoPlaceholder
Typ: String
Standard: "polite"
Legen Sie den Platzhalter der Eingabe auf eine Beispielnummer für das ausgewählte Land fest und aktualisieren Sie ihn, wenn sich das Land ändert. Sie können den Nummerntyp mit der Option placeholderNumberType
angeben. Standardmäßig ist es auf "polite"
eingestellt, was bedeutet, dass der Platzhalter nur dann gesetzt wird, wenn die Eingabe noch keinen hat. Sie können es auch auf "aggressive"
setzen, wodurch alle vorhandenen Platzhalter ersetzt werden, oder auf "off"
. Erfordert das Laden des Utils-Skripts.
ContainerKlasse CountryOrder Ländersuche benutzerdefinierter Platzhalter dropdownContainer ausschließenLänder fixDropdownWidth formatAsYouType formatOnDisplay geoIpLookup Hier ist ein Beispiel für die Verwendung des ipapi-Dienstes: Beachten Sie, dass der versteckter Eingang * Hinweis : Für diese Funktion muss sich die Eingabe innerhalb eines Dadurch werden die folgenden (versteckten) Elemente generiert, die beim Absenden automatisch ausgefüllt werden: i18n Wenn wir eine von Ihnen benötigte Sprache derzeit nicht unterstützen, können Sie diese ganz einfach selbst beisteuern – Sie müssen nur eine Handvoll UI-Übersetzungszeichenfolgen bereitstellen, da wir die Ländernamen automatisch aus dem Länderlistenprojekt abrufen. Option 1: Importieren Sie eines der bereitgestellten Übersetzungsmodule Option 2: Definieren Sie Ihre eigenen benutzerdefinierten Übersetzungen Anfangsland LoadUtilsOnInit (siehe Diskussion zu Version 25) Dies ist eine Möglichkeit, die enthaltenen utils.js (verzögert) zu laden (um Formatierung/Validierung usw. zu aktivieren) – weitere Optionen finden Sie unter Laden des Dienstprogramm-Skripts. Sie müssen die Datei utils.js hosten und dann die Option Alternativ kann dies eine Funktion sein, die ein Versprechen für das utils-Modul zurückgibt. Wenn Sie einen Bundler wie Webpack verwenden, können Sie damit dem Bundler mitteilen, dass das Utils-Skript in einer separaten Datei vom Rest Ihres Codes gespeichert werden soll. Zum Beispiel: Das Skript wird nur abgerufen, wenn Sie das Plugin initialisieren, und außerdem erst, wenn der Ladevorgang der Seite abgeschlossen ist (beim Fensterladeereignis), um eine Blockierung zu verhindern (das Skript ist ~260 KB groß). Beim Instanziieren des Plugins wird ein Promise-Objekt unter der nationalMode nur Länder placeholderNumberType Flaggen anzeigen separateDialCode strictMode Verwenden Sie FullscreenPopup utilsScript Diese Option ist veraltet und wurde in validationNumberType In diesen Beispielen bezieht sich zerstören getExtension Gibt eine Zeichenfolge zurück, z. B. wenn der Eingabewert getNumber Gibt eine Zeichenfolge zurück, z. B. getNumberType Gibt eine Ganzzahl zurück, die Sie mit den verschiedenen Optionen in der Aufzählung Beachten Sie, dass es in den USA keine Möglichkeit gibt, zwischen Festnetz- und Mobilfunknummern zu unterscheiden. Stattdessen wird getSelectedCountryData Gibt etwa Folgendes zurück: getValidationError Gibt eine Ganzzahl zurück, die Sie mit den verschiedenen Optionen in der Aufzählung isValidNumber Gibt zurück: isValidNumberPrecise Gibt zurück: setCountry setNumber setPlaceholderNumberType setDisabled getCountryData Gibt ein Array von Länderobjekten zurück: getInstance LoadUtils (siehe Diskussion zu Version 25) Sie können auf die folgenden Ereignisse warten, die am Eingabeelement ausgelöst werden. Länderwechsel Ein Beispiel finden Sie hier: Ländersynchronisierung open:countrydropdown close:countrydropdown Für die Themengestaltung stehen zahlreiche CSS-Variablen zur Verfügung. Die vollständige Liste finden Sie in intlTelInput.scss. Was den leeren Zustand (Globussymbol) betrifft, ist die Standardversion dunkelgrau, und wir bieten auch eine „helle“ Version an, die besser mit einem dunklen Thema funktionieren sollte. Alternativ können Sie das Globussymbol ganz einfach in der Farbe neu generieren, die Sie für Ihr Thema benötigen. Wir empfehlen Ihnen, es in der höchstmöglichen Auflösung herunterzuladen und das Bild dann auf die erforderliche Größe zu verkleinern (20 Pixel breit für die Standardversion und 40 Pixel breit für die @2x-Version). Beispiel für den Dunkelmodus (mit Screenshot unten): HINWEIS: Dies setzt voraus, dass Sie bereits über ein eigenes Dark-Mode-Styling für das allgemeine Textkörper-/Eingabe-Styling verfügen, z. B. so etwas: Beispiel: Wir bieten Übersetzungen für die über 200 Ländernamen sowie anderen Benutzeroberflächentext (z. B. den Platzhaltertext für die Ländersucheingabe) in über 30 Sprachen. Einzelheiten zu deren Verwendung finden Sie unter der Option Unterstützte Sprachen: Arabisch, Bengali, Bosnisch, Bulgarisch, Katalanisch, Chinesisch, Kroatisch, Tschechisch, Dänisch, Niederländisch, Norwegisch, Englisch, Farsi, Finnisch, Französisch, Deutsch, Griechisch, Hindi, Ungarisch, Indonesisch, Italienisch, Japanisch, Koreanisch, Marathi , Polnisch, Portugiesisch, Rumänisch, Russisch, Slowakisch, Spanisch, Schwedisch, Telugu, Thailändisch, Türkisch, Urdu, Vietnamesisch. Wenn wir eine von Ihnen benötigte Sprache derzeit nicht unterstützen, können Sie diese ganz einfach selbst beisteuern – Sie müssen nur eine Handvoll UI-Übersetzungszeichenfolgen bereitstellen, da wir die Ländernamen automatisch aus dem Länderlistenprojekt abrufen. Das Dienstprogramm-Skript (build/js/utils.js) ist ein benutzerdefinierter Build von Googles libphonenumber, der die folgenden Funktionen ermöglicht: Die Formatierung/Validierung internationaler Nummern ist schwierig (sie variiert je nach Land/Bezirk und wir unterstützen derzeit ca. 230 Länder). Die einzige umfassende Lösung, die wir gefunden haben, ist libphonenumber, aus der wir die relevanten Teile in einer einzigen JavaScript-Datei vorkompiliert haben, die im Build-Verzeichnis enthalten ist. Leider sind es auch nach der Änderung immer noch ca. 260 KB. Im folgenden Abschnitt erfahren Sie, wie Sie es am besten laden. Um das Utils-Skript selbst neu zu kompilieren (z. B. um die Version von libphonenumber zu aktualisieren, aus der es erstellt wurde), lesen Sie den beitragenden Leitfaden. Siehe Diskussion zu Version 25. Das utils-Skript bietet viele tolle Funktionen (siehe Abschnitt oben), geht aber mit einer erhöhten Dateigröße (~260 KB) einher. Es gibt zwei Möglichkeiten, das Utils-Skript zu laden, je nachdem, ob Sie sich Gedanken über die Dateigröße machen oder nicht. Option 1: intlTelInputWithUtils Option 2: LoadUtilsOnInit Alternativ können Sie die Option Wenn Sie mehr Kontrolle darüber haben möchten, wann diese Datei verzögert geladen wird, können Sie die statische Methode Eingabe in voller Breite dropdownContainer: Dropdown schließt sich beim Scrollen nicht Eingabemarge Fehlermeldungen anzeigen Dropdown-Position Platzhalter Bootstrap-Eingabegruppen Im beitragenden Leitfaden finden Sie Anweisungen zum Einrichten des Projekts und zum Vornehmen von Änderungen sowie zum Aktualisieren auf eine neue Version von libphonenumber, zum Aktualisieren der Flaggenbilder oder zum Hinzufügen einer neuen Übersetzung. Benutzertests mit Unterstützung des BrowserStack Open-Source-Programms Browsertests über
Typ: String
Standard: ""
Zusätzliche Klassen zum Hinzufügen zum (injizierten) Wrapper
Typ: Array
Standard: null
Geben Sie die Reihenfolge für die Länderliste mit einem Array von ISO2-Ländercodes an. Alle ausgelassenen Länder werden nach den angegebenen angezeigt, z. B. wenn Sie countryOrder
auf ["jp", "kr"]
setzen, wird folgende Liste angezeigt: Japan, Südkorea, Afghanistan, Albanien, Algerien usw.
Typ: Boolean
Standard: true
Fügen Sie oben im Dropdown-Menü eine Sucheingabe hinzu, damit Benutzer die angezeigten Länder filtern können.
Typ: Function
Standard: null
Ändern Sie den von autoPlaceholder generierten Platzhalter. Muss eine Zeichenfolge zurückgeben. intlTelInput ( input , {
customPlaceholder : function ( selectedCountryPlaceholder , selectedCountryData ) {
return "e.g. " + selectedCountryPlaceholder ;
} ,
} ) ;
Typ: Node
Standard: null
Erwartet einen Knoten, z. B. document.body
. Anstatt das Land-Dropdown-Markup neben der Eingabe zu platzieren, hängen Sie es an den angegebenen Knoten an, und es wird dann mit JavaScript neben der Eingabe positioniert (unter Verwendung von position: fixed
). Dies ist nützlich, wenn sich die Eingabe in einem Container mit overflow: hidden
befindet. Beachten Sie, dass die Positionierung durch Scrollen unterbrochen wird, sodass das Dropdown-Menü beim window
Scroll-Ereignis automatisch geschlossen wird.
Typ: Array
Standard: []
Zeigen Sie im Dropdown-Menü alle Länder außer den hier angegebenen an. Spielen Sie mit dieser Option im Storybook (mithilfe der React-Komponente).
Typ: Boolean
Standard: true
Legen Sie die Dropdown-Breite auf die Eingabebreite fest (anstatt so breit wie der längste Ländername). Spielen Sie mit dieser Option im Storybook (mithilfe der React-Komponente).
Typ: Boolean
Standard: true
Formatieren Sie die Zahl automatisch, während der Benutzer sie eingibt. Diese Funktion wird deaktiviert, wenn der Benutzer seine eigenen Formatierungszeichen eingibt. Erfordert das Laden des Utils-Skripts.
Typ: Boolean
Standard: true
Formatieren Sie den Eingabewert (gemäß der Option nationalMode
) während der Initialisierung und bei setNumber
. Erfordert das Laden des Utils-Skripts.
Typ: Function
Standard: null
Wenn Sie initialCountry
auf "auto"
setzen, müssen Sie diese Option verwenden, um eine benutzerdefinierte Funktion anzugeben, die einen IP-Suchdienst aufruft, um den Standort des Benutzers zu ermitteln, und dann den success
mit dem entsprechenden Ländercode aufruft. Beachten Sie außerdem, dass beim Instanziieren des Plugins ein Promise-Objekt unter der promise
-Instanzeigenschaft zurückgegeben wird, sodass Sie beispielsweise iti.promise.then(...)
ausführen können, um zu erfahren, wann Initialisierungsanforderungen wie diese abgeschlossen wurden. 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
-Callback im Fehlerfall aufgerufen werden muss, weshalb in diesem Beispiel catch()
verwendet wird. Tipp: Speichern Sie das Ergebnis in einem Cookie, um wiederholte Suchvorgänge zu vermeiden!
Typ: Function
Standard: null
Ermöglicht die Erstellung versteckter Eingabefelder innerhalb eines Formulars, um die vollständige internationale Telefonnummer und die ausgewählte Landesvorwahl zu speichern. Es akzeptiert eine Funktion, die als Argument den Namen des Haupttelefoneingangs erhält. Diese Funktion sollte ein Objekt mit phone
und (optional) country
zurückgeben, um die Namen der versteckten Eingaben für die Telefonnummer bzw. die Landesvorwahl anzugeben. Dies ist bei Nicht-Ajax-Formularübermittlungen nützlich, um sicherzustellen, dass die vollständige internationale Nummer und Ländervorwahl erfasst wird, insbesondere wenn nationalMode
aktiviert ist. -Elements befinden, da auf das
submit
-Ereignis im nächstgelegenen Formularelement gewartet wird. Beachten Sie außerdem, dass getNumber
intern verwendet wird und daher erstens das Laden des Utils-Skripts erforderlich ist und zweitens eine gültige Zahl erwartet wird. Daher funktioniert es nur dann korrekt, wenn Sie isValidNumber
zur Validierung der Zahl verwendet haben, bevor Sie das Absenden des Formulars zulassen. intlTelInput ( input , {
hiddenInput : function ( telInputName ) {
return {
phone : "phone_full" ,
country : "country_code"
} ;
}
} ) ;
< input type =" hidden " name =" phone_full " >
< input type =" hidden " name =" country_code " >
Typ: Object
Standard: {}
Erlauben Sie die Lokalisierung/Anpassung der über 200 Ländernamen sowie anderer Benutzeroberflächentexte (z. B. den Platzhaltertext für die Ländersucheingabe). Der einfachste Weg, dies zu tun, besteht darin, einfach eines der bereitgestellten Übersetzungsmodule zu importieren und i18n
auf diesen Wert zu setzen (siehe Option 1 unten). Sie können auf diese Weise auch einen oder mehrere einzelne Schlüssel überschreiben (siehe Option 1 unten). Alternativ können Sie Ihre eigenen benutzerdefinierten Übersetzungen bereitstellen (siehe Option 2 unten). Wenn Sie Ihre eigenen angeben, müssen Sie alle Ländernamen (die aus dem Länderlistenprojekt kopiert werden können, z. B. hier sind die Ländernamen auf Französisch) sowie einige UI-Zeichenfolgen (unten aufgeführt) angeben. Siehe Beispiel. 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" ,
}
} ) ;
Typ: String
Standard: ""
Legen Sie die anfängliche Länderauswahl fest, indem Sie den Ländercode angeben, z. B. "us"
für die Vereinigten Staaten. (Achten Sie darauf, dies nicht zu tun, es sei denn, Sie sind sich über das Land des Benutzers sicher, da es bei falscher Einstellung zu kniffligen Problemen führen kann und der Benutzer seine nationale Nummer automatisch ausfüllt und das Formular ohne Überprüfung absendet – in bestimmten Fällen kann die Validierung bestehen und es kann passieren, dass Sie eine Nummer mit dem falschen Vorwahlcode speichern. Sie können initialCountry
auch auf "auto"
setzen, wodurch das Land des Benutzers anhand seiner IP-Adresse ermittelt wird (erfordert die Option geoIpLookup
– siehe Beispiel). Beachten Sie, dass bei Verwendung initialCountry
die Länderauswahl nicht aktualisiert wird, wenn die Eingabe bereits eine Nummer mit einer internationalen Vorwahl enthält.
Typ: String
oder () => Promise
Standard: ""
Beispiel: "/build/js/utils.js"
loadUtilsOnInit
auf diese URL setzen oder sie alternativ einfach auf eine vom CDN gehostete Version verweisen, z. B. "https://cdn.jsdelivr.net/npm/[email protected]/build/js/utils.js"
. Das Skript wird über eine dynamische Importanweisung geladen, was bedeutet, dass die URL nicht relativ sein kann, sondern absolut sein muss.{ loadUtilsOnInit: () => import("intl-tel-input/utils") }
.promise
-Instanzeigenschaft zurückgegeben, sodass Sie beispielsweise iti.promise.then(callback)
ausführen können, um zu erfahren, wann solche Initialisierungsanforderungen abgeschlossen sind. Weitere Informationen finden Sie unter Dienstprogramm-Skript.
Typ: Boolean
Standard: true
Formatieren Sie Zahlen im nationalen Format und nicht im internationalen Format. Dies gilt für Platzhalternummern und für die Anzeige vorhandener Nummern von Benutzern. Beachten Sie, dass es für Benutzer in Ordnung ist, ihre Nummern im nationalen Format einzugeben – solange sie das richtige Land ausgewählt haben, können Sie getNumber
verwenden, um eine vollständige internationale Nummer zu extrahieren – siehe Beispiel. Es wird empfohlen, diese Option aktiviert zu lassen, um Benutzer dazu zu ermutigen, ihre Nummern im nationalen Format einzugeben, da ihnen dieses normalerweise vertrauter ist und somit ein besseres Benutzererlebnis bietet.
Typ: Array
Standard: []
Zeigen Sie im Dropdown-Menü nur die von Ihnen angegebenen Länder an – siehe Beispiel.
Typ: String
Standard: "MOBILE"
Geben Sie einen der Schlüssel aus der Aufzählung intlTelInput.utils.numberType
an (z. B. "FIXED_LINE"
), um den Nummerntyp festzulegen, der für den Platzhalter verwendet werden soll. Spielen Sie mit dieser Option im Storybook (mithilfe der React-Komponente).
Typ: Boolean
Standard: true
Setzen Sie dies auf „false“, um die Flaggen beispielsweise aus politischen Gründen auszublenden. Stattdessen wird ein allgemeines Globussymbol angezeigt. Spielen Sie mit dieser Option im Storybook (mithilfe der React-Komponente).
Typ: Boolean
Standard: false
Zeigen Sie die internationale Vorwahl des ausgewählten Landes neben der Eingabe an, sodass es aussieht, als wäre sie Teil der eingegebenen Nummer. Da der Benutzer die angezeigte Vorwahl nicht bearbeiten kann, versucht er möglicherweise, eine neue einzugeben. Um zu vermeiden, dass zwei Vorwahlen nebeneinander angezeigt werden, öffnen wir in diesem Fall automatisch das Länder-Dropdown und fügen die neue Vorwahl in die Sucheingabe ein stattdessen. Wenn sie also +54 eingeben, wird Argentinien im Dropdown-Menü hervorgehoben und sie können einfach die Eingabetaste drücken, um es auszuwählen, wodurch die angezeigte Vorwahl aktualisiert wird (für diese Funktion müssen allowDropdown
und countrySearch
aktiviert sein). Spielen Sie mit dieser Option im Storybook (mithilfe der React-Komponente).
Typ: Boolean
Standard: false
Ignorieren Sie alle irrelevanten Zeichen, während der Benutzer die Eingabe eingibt. Der Benutzer kann am Anfang nur numerische Zeichen und ein optionales Pluszeichen eingeben. Begrenzen Sie die Länge auf die maximal gültige Zahlenlänge (dies berücksichtigt validationNumberType
). Erfordert das Laden des Utils-Skripts. Siehe Beispiel.
Typ: Boolean
Standard: true on mobile devices, false otherwise
Steuern Sie, wann die Länderliste als Vollbild-Popup oder als Inline-Dropdown angezeigt wird. Standardmäßig wird es auf Mobilgeräten als Vollbild-Popup (basierend auf Benutzeragent und Bildschirmbreite) angezeigt, um den begrenzten Platz besser zu nutzen (ähnlich wie ein natives funktioniert) und als Inline-Dropdown größere Geräte/Bildschirme. Spielen Sie mit dieser Option im Storybook (mithilfe der React-Komponente).
Typ: String
oder () => Promise
Standard: ""
Beispiel: "/build/js/utils.js"
loadUtilsOnInit
umbenannt. Bitte lesen Sie die Einzelheiten zu dieser Option und verwenden Sie sie stattdessen.
Typ: String
Standard: "MOBILE"
Geben Sie einen der Schlüssel aus der Aufzählung intlTelInput.utils.numberType
an (z. B. "FIXED_LINE"
), um den Zahlentyp festzulegen, der während der Validierung mit isValidNumber
erzwungen werden soll, sowie die Zahlenlänge, die mit strictMode
erzwungen werden soll. Setzen Sie es auf null
um keinen bestimmten Typ zu erzwingen. Instanzmethoden
iti
auf die Plugin-Instanz, die zurückgegeben wird, wenn Sie das Plugin initialisieren, z const iti = intlTelInput ( input ) ;
Entfernen Sie das Plugin aus der Eingabe und heben Sie die Bindung aller Ereignis-Listener auf. iti . destroy ( ) ;
Rufen Sie die Durchwahl der aktuellen Nummer ab. Erfordert das Laden des Utils-Skripts. const extension = iti . getExtension ( ) ;
"(702) 555-5555 ext. 1234"
wäre, würde dies "1234"
zurückgeben.
Rufen Sie die aktuelle Nummer im angegebenen Format ab (standardmäßig E.164-Standard). Die verschiedenen Formate stehen im Enum intlTelInput.utils.numberFormat
zur Verfügung, das Sie hier sehen können. Erfordert das Laden des Utils-Skripts. Beachten Sie, dass selbst wenn nationalMode
aktiviert ist, dadurch immer noch eine vollständige internationale Nummer zurückgegeben werden kann. Beachten Sie außerdem, dass diese Methode eine gültige Zahl erwartet und daher erst nach der Validierung verwendet werden sollte. const number = iti . getNumber ( ) ;
// or
const number = iti . getNumber ( intlTelInput . utils . numberFormat . E164 ) ;
"+17024181234"
Rufen Sie den Typ (Festnetz/Mobilfunk/gebührenfrei usw.) der aktuellen Nummer ab. Erfordert das Laden des Utils-Skripts. const numberType = iti . getNumberType ( ) ;
intlTelInput.utils.numberType
vergleichen können, z. B if ( numberType === intlTelInput . utils . numberType . MOBILE ) {
// is a mobile number
}
FIXED_LINE_OR_MOBILE
zurückgegeben.
Rufen Sie die Länderdaten für das aktuell ausgewählte Land ab. const countryData = iti . getSelectedCountryData ( ) ;
{
name : "Afghanistan" ,
iso2 : "af" ,
dialCode : "93"
}
Erhalten Sie weitere Informationen zu einem Validierungsfehler. Erfordert das Laden des Utils-Skripts. const error = iti . getValidationError ( ) ;
intlTelInput.utils.validationError
vergleichen können, z. B if ( error === intlTelInput . utils . validationError . TOO_SHORT ) {
// the number is too short
}
Überprüfen Sie, ob die aktuelle Nummer anhand ihrer Länge gültig ist – siehe Beispiel, was für die meisten Anwendungsfälle ausreichend sein sollte. Eine genauere Validierung finden Sie unter isValidNumberPrecise
. Der Vorteil von isValidNumber
besteht jedoch darin, dass es viel zukunftssicherer ist, da Länder auf der ganzen Welt zwar regelmäßig ihre Nummernregeln aktualisieren, ihre Nummernlängen jedoch nur sehr selten ändern. Wenn diese Methode false
zurückgibt, können Sie getValidationError
verwenden, um weitere Informationen abzurufen. Respektiert die Option validationNumberType
(die standardmäßig auf „MOBILE“ eingestellt ist). Erfordert das Laden des Utils-Skripts. const isValid = iti . isValidNumber ( ) ;
true
/ false
Überprüfen Sie, ob die aktuelle Nummer gültig ist, indem Sie genaue Zuordnungsregeln für jedes Land/jede Ortsvorwahl usw. verwenden – siehe Beispiel. Beachten Sie, dass sich diese Regeln jeden Monat für verschiedene Länder auf der ganzen Welt ändern. Sie müssen daher darauf achten, das Plugin auf dem neuesten Stand zu halten, da Sie sonst anfangen, gültige Nummern abzulehnen. Eine einfachere und zukunftssicherere Form der Validierung finden Sie oben unter isValidNumber
. Wenn die Validierung fehlschlägt, können Sie getValidationError
verwenden, um weitere Informationen abzurufen. Erfordert das Laden des Utils-Skripts. const isValid = iti . isValidNumberPrecise ( ) ;
true
/ false
Ändern Sie das ausgewählte Land. Es sollte, wenn überhaupt, selten vorkommen, dass Sie dies tun müssen, da das ausgewählte Land automatisch aktualisiert wird, wenn Sie setNumber
aufrufen und eine Nummer einschließlich einer internationalen Vorwahl übergeben, was die empfohlene Verwendung ist. Beachten Sie, dass Sie das Ländercode-Argument weglassen können, um das Land auf den standardmäßig leeren (Globus-)Status festzulegen. iti . setCountry ( "gb" ) ;
Geben Sie eine Nummer ein und aktualisieren Sie das ausgewählte Land entsprechend. Beachten Sie, dass bei aktivierter formatOnDisplay
versucht wird, die Zahl entsprechend der Option nationalMode
entweder in ein nationales oder ein internationales Format zu formatieren. iti . setNumber ( "+447733123456" ) ;
Ändern Sie die Option „placeholderNumberType“. iti . setPlaceholderNumberType ( "FIXED_LINE" ) ;
Aktualisiert das deaktivierte Attribut sowohl des Telefoneingangs als auch der ausgewählten Länderschaltfläche. Akzeptiert einen booleschen Wert. Hinweis: Wir empfehlen, dies zu verwenden, anstatt das deaktivierte Attribut der Eingabe direkt zu aktualisieren. iti . setDisabled ( true ) ;
Statische Methoden
Rufen Sie die Länderdaten des Plugins ab – entweder zur Wiederverwendung an anderer Stelle, z. B. zum Generieren Ihres eigenen Länder-Dropdowns – siehe Beispiel, oder Sie können es alternativ zum Ändern der Länderdaten verwenden. Beachten Sie, dass alle Änderungen vor der Initialisierung des Plugins vorgenommen werden müssen. const countryData = intlTelInput . getCountryData ( ) ;
[ {
name : "Afghanistan" ,
iso2 : "af" ,
dialCode : "93"
} , ... ]
Nach der Initialisierung des Plugins können Sie mit dieser Methode jederzeit wieder auf die Instanz zugreifen, indem Sie einfach das entsprechende Eingabeelement übergeben. const input = document . querySelector ( '#phone' ) ;
const iti = intlTelInput . getInstance ( input ) ;
iti . isValidNumber ( ) ; // etc
Als Alternative zur Option loadUtilsOnInit
ermöglicht diese Methode das manuelle Laden des utils.js-Skripts bei Bedarf, um Formatierung/Validierung usw. zu aktivieren. Weitere Informationen finden Sie unter „Laden des Utilities-Skripts“. Diese Methode sollte nur einmal pro Seite aufgerufen werden. Es wird ein Promise-Objekt zurückgegeben, sodass Sie mit loadUtils().then(callback)
wissen können, wann es fertig ist. // 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 */ } }
} ) ;
Veranstaltungen
Dies wird ausgelöst, wenn das ausgewählte Land aktualisiert wird, z. B. wenn der Benutzer ein Land aus der Dropdown-Liste auswählt, eine andere Vorwahl in die Eingabe eingibt oder Sie setCountry
usw. aufrufen. input . addEventListener ( "countrychange" , function ( ) {
// do something with iti.getSelectedCountryData()
} ) ;
Dies wird ausgelöst, wenn der Benutzer das Dropdown öffnet.
Dies wird ausgelöst, wenn der Benutzer das Dropdown schließt. Theming / Dunkler Modus
@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 ;
}
}
Übersetzungen
i18n
. Sehen Sie sie in Aktion. Dienstprogramm-Skript
getNumber
und setNumber
isValidNumber
, getNumberType
und getValidationError
placeholderNumberType
können Sie sogar den Nummerntyp (z. B. Mobiltelefon) angebengetNumber
auch wenn Sie die Option nationalMode
verwenden Laden des Dienstprogrammskripts
Wenn Sie sich keine Gedanken über die Dateigröße machen (z. B. weil Sie das Laden dieses Skripts zu langsam haben), ist es am einfachsten, einfach das vollständige Paket ( /build/js/intlTelInputWithUtils.js
) zu verwenden, das im Lieferumfang des Utils-Skripts enthalten ist. Dieses Skript kann genau wie das Hauptskript intlTelInput.js verwendet werden – es kann also entweder direkt auf die Seite geladen werden (die wie üblich window.intlTelInput
definiert) oder wie folgt importiert werden: import intlTelInput from "intl-tel-input/intlTelInputWithUtils"
.
Wenn Sie Bedenken hinsichtlich der Dateigröße haben , können Sie das Utils-Skript bei der Initialisierung des Plugins verzögert laden, indem Sie die Initialisierungsoption loadUtilsOnInit
verwenden. Sie müssen die Datei utils.js hosten und dann die Option loadUtilsOnInit
auf diese URL setzen oder sie einfach auf eine vom CDN gehostete Version verweisen, z. B. "https://cdn.jsdelivr.net/npm/[email protected]/build/js/utils.js"
.loadUtilsOnInit
auf eine Funktion setzen, die ein Versprechen für das utils-Skript als JS-Modulobjekt zurückgibt. Wenn Sie zum Erstellen Ihrer App einen Bundler wie Webpack, Vite oder Parcel verwenden, können Sie damit die Dienstprogramme automatisch in ein anderes Bundle aufteilen: intlTelInput ( htmlInputElement , {
loadUtilsOnInit : ( ) => import ( "intl-tel-input/utils)
});
loadUtils
manuell aufrufen, anstatt loadUtilsOnInit
zu verwenden. Fehlerbehebung
Wenn Ihre Eingabe in voller Breite erfolgen soll, müssen Sie den Container auf den gleichen Wert einstellen, d. h . iti { width : 100 % ; }
Wenn Sie einen anderen Scroll-Container als window
haben, der Probleme verursacht, weil das Dropdown-Menü beim Scrollen nicht geschlossen wird, warten Sie einfach auf das Scroll-Ereignis für dieses Element und lösen Sie ein Scroll-Ereignis für „ window
“ aus, das wiederum das Dropdown-Menü schließt, z. B scrollingElement . addEventListener ( "scroll" , function ( ) {
const e = document . createEvent ( 'Event' ) ;
e . initEvent ( "scroll" , true , true ) ;
window . dispatchEvent ( e ) ;
} ) ;
Aus Gründen der Ausrichtung erzwingt das Standard-CSS den vertikalen Rand der Eingabe auf 0px
. Wenn Sie einen vertikalen Rand wünschen, sollten Sie ihn zum Container hinzufügen (mit der Klasse iti
).
Wenn Ihr Fehlerbehandlungscode vor dem eine Fehlermeldung einfügt, wird das Layout beschädigt. Stattdessen müssen Sie es vor dem Container einfügen (mit der Klasse
iti
).
Das Dropdown-Menü sollte je nach verfügbarem Platz automatisch über/unter der Eingabe erscheinen. Damit dies ordnungsgemäß funktioniert, müssen Sie das Plugin erst initialisieren, nachdem der zum DOM hinzugefügt wurde.
Um die automatischen länderspezifischen Platzhalter zu erhalten, lassen Sie einfach das Attribut placeholder im weg oder setzen Sie
autoPlaceholder
auf "aggressive"
, um alle vorhandenen Platzhalter zu überschreiben.
Damit das Plugin gut mit Bootstrap-Eingabegruppen funktioniert, sind einige CSS-Korrekturen erforderlich. Einen Codepen können Sie hier sehen.
Hinweis: Derzeit gibt es in Mobile Safari einen Fehler, der zu einem Absturz führt, wenn Sie in einer Eingabegruppe auf den Dropdown-Pfeil (ein CSS-Dreieck) klicken. Die einfachste Lösung besteht darin, das CSS-Dreieck mit dieser Zeile zu entfernen: . iti__arrow { border : none; }
Mitwirken
Zuschreibungen