หน้าแรก>การเขียนโปรแกรมที่เกี่ยวข้อง>ซอร์สโค้ดอื่น ๆ

i18n
ประเภท: Object ค่าเริ่มต้น: {}
อนุญาตให้มีการแปล/ปรับแต่งชื่อประเทศมากกว่า 200 ชื่อ รวมถึงข้อความอินเทอร์เฟซผู้ใช้อื่นๆ (เช่น ข้อความตัวยึดตำแหน่งสำหรับการป้อนข้อมูลการค้นหาประเทศ) วิธีที่ง่ายที่สุดในการทำเช่นนี้คือการนำเข้าโมดูลการแปลอันใดอันหนึ่งที่มีให้และตั้ง i18n เป็นค่านั้น (ดูตัวเลือก 1 ด้านล่าง) คุณยังสามารถแทนที่คีย์เดี่ยวอย่างน้อย 1 คีย์ได้ด้วยวิธีนี้ (ดูตัวเลือก 1 ด้านล่าง) หรือคุณสามารถจัดเตรียมคำแปลที่คุณกำหนดเองได้ (ดูตัวเลือกที่ 2 ด้านล่าง) หากคุณจัดเตรียมชื่อประเทศของคุณเอง คุณจะต้องระบุชื่อประเทศทั้งหมด (ซึ่งสามารถคัดลอกได้จากโครงการรายชื่อประเทศ เช่น นี่คือชื่อประเทศในภาษาฝรั่งเศส) รวมถึงสตริง UI บางส่วน (รายการด้านล่าง) ดูตัวอย่าง

หากปัจจุบันเราไม่รองรับภาษาที่คุณต้องการ เป็นเรื่องง่ายที่จะมีส่วนร่วมด้วยตนเอง - คุณเพียงแค่ต้องระบุสตริงการแปล UI เพียงไม่กี่รายการ เนื่องจากเราจะดึงชื่อประเทศจากโครงการรายชื่อประเทศโดยอัตโนมัติ

ตัวเลือกที่ 1: นำเข้าหนึ่งในโมดูลการแปลที่มีให้

 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" ,
  } ,
} ) ;

ตัวเลือกที่ 2: กำหนดการแปลที่คุณกำหนดเอง

 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" ,
  }
} ) ;

ประเทศเริ่มต้น
ประเภท: String ค่าเริ่มต้น: ""
ตั้งค่าการเลือกประเทศเริ่มต้นโดยระบุรหัสประเทศ เช่น "us" สำหรับสหรัฐอเมริกา (ระวังอย่าทำเช่นนี้เว้นแต่คุณจะมั่นใจในประเทศของผู้ใช้ เนื่องจากอาจนำไปสู่ปัญหายุ่งยากได้หากตั้งค่าไม่ถูกต้องและผู้ใช้กรอกหมายเลขประจำตัวประชาชนของตนโดยอัตโนมัติและส่งแบบฟอร์มโดยไม่ตรวจสอบ - ในบางกรณีอาจผ่านการตรวจสอบได้ และสุดท้ายคุณก็สามารถจัดเก็บหมายเลขด้วยรหัสการโทรที่ไม่ถูกต้องได้) คุณยังสามารถตั้ง initialCountry เป็น "auto" ซึ่งจะค้นหาประเทศของผู้ใช้ตามที่อยู่ IP ของพวกเขา (ต้องใช้ตัวเลือก geoIpLookup - ดูตัวอย่าง) โปรดทราบว่าไม่ว่าคุณจะใช้ initialCountry อย่างไร ระบบจะไม่อัปเดตการเลือกประเทศหากอินพุตมีหมายเลขที่มีรหัสการโทรระหว่างประเทศอยู่แล้ว

loadUtilsOnInit (ดูการสนทนา v25)
ประเภท: String หรือ () => Promise ค่าเริ่มต้น: "" ตัวอย่าง: "/build/js/utils.js"

นี่เป็นวิธีหนึ่งในการ (ขี้เกียจ) โหลด utils.js ที่รวมไว้ (เพื่อเปิดใช้งานการจัดรูปแบบ/การตรวจสอบ ฯลฯ) - ดูการโหลดสคริปต์ยูทิลิตี้สำหรับตัวเลือกเพิ่มเติม คุณจะต้องโฮสต์ไฟล์ utils.js จากนั้นตั้งค่าตัวเลือก loadUtilsOnInit เป็น URL นั้น หรือเพียงชี้ไปที่เวอร์ชันที่โฮสต์ CDN เช่น "https://cdn.jsdelivr.net/npm/[email protected]/build/js/utils.js" สคริปต์ถูกโหลดผ่านคำสั่งนำเข้าแบบไดนามิก ซึ่งหมายความว่า URL ไม่สามารถสัมพันธ์กันได้ - URL จะต้องเป็นแบบสัมบูรณ์

หรืออาจเป็นฟังก์ชันที่ส่งคืนสัญญาสำหรับโมดูล utils เมื่อใช้บันเดิลเช่น Webpack สิ่งนี้สามารถใช้เพื่อบอกบันเดิลว่าควรเก็บสคริปต์ utils ไว้ในไฟล์แยกต่างหากจากส่วนที่เหลือของโค้ดของคุณ ตัวอย่างเช่น: { loadUtilsOnInit: () => import("intl-tel-input/utils") }

สคริปต์จะถูกดึงเฉพาะเมื่อคุณเริ่มต้นปลั๊กอิน และเพิ่มเติมเฉพาะเมื่อเพจโหลดเสร็จแล้วเท่านั้น (ในเหตุการณ์โหลดหน้าต่าง) เพื่อป้องกันการบล็อก (สคริปต์คือ ~ 260KB) เมื่อสร้างอินสแตนซ์ของปลั๊กอิน ออบเจ็กต์ Promise จะถูกส่งกลับภายใต้คุณสมบัติอินสแตนซ์ promise ดังนั้นคุณจึงสามารถดำเนินการบางอย่างเช่น iti.promise.then(callback) เพื่อทราบว่าคำขอการเริ่มต้นเช่นนี้เสร็จสิ้นเมื่อใด ดูสคริปต์ยูทิลิตี้สำหรับข้อมูลเพิ่มเติม

โหมดแห่งชาติ
ประเภท: Boolean ค่าเริ่มต้น: true
จัดรูปแบบตัวเลขในรูปแบบแห่งชาติ แทนที่จะเป็นรูปแบบสากล สิ่งนี้ใช้กับหมายเลขตัวยึดตำแหน่ง และเมื่อแสดงหมายเลขที่มีอยู่ของผู้ใช้ โปรดทราบว่าผู้ใช้สามารถพิมพ์ตัวเลขในรูปแบบประเทศได้ ตราบใดที่พวกเขาเลือกประเทศที่ถูกต้อง คุณสามารถใช้ getNumber เพื่อแยกหมายเลขต่างประเทศทั้งหมดได้ ดูตัวอย่าง ขอแนะนำให้เปิดใช้งานตัวเลือกนี้ไว้ เพื่อสนับสนุนให้ผู้ใช้ป้อนหมายเลขของตนในรูปแบบประเทศ เนื่องจากโดยปกติแล้วพวกเขาจะคุ้นเคยมากกว่า ดังนั้นจึงสร้างประสบการณ์ผู้ใช้ที่ดียิ่งขึ้น

เท่านั้นประเทศ
ประเภท: Array ค่าเริ่มต้น: []
ในเมนูแบบเลื่อนลง แสดงเฉพาะประเทศที่คุณระบุ - ดูตัวอย่าง

ตัวยึดตำแหน่งNumberType
ประเภท: String เริ่มต้น: "MOBILE"
ระบุหนึ่งในคีย์จาก enum intlTelInput.utils.numberType (เช่น "FIXED_LINE" ) เพื่อตั้งค่าประเภทตัวเลขที่จะใช้สำหรับตัวยึดตำแหน่ง เล่นกับตัวเลือกนี้บน Storybook (โดยใช้ส่วนประกอบ React)

แสดงธง
ประเภท: Boolean ค่าเริ่มต้น: true
ตั้งค่านี้เป็นเท็จเพื่อซ่อนธง เช่น ด้วยเหตุผลทางการเมือง แต่จะแสดงไอคอนลูกโลกทั่วไปแทน เล่นกับตัวเลือกนี้บน Storybook (โดยใช้ส่วนประกอบ React)

แยกDialCode
ประเภท: Boolean เริ่มต้น: false
แสดงรหัสการโทรระหว่างประเทศของประเทศที่เลือกถัดจากช่องป้อนข้อมูล เพื่อให้ดูเหมือนว่าเป็นส่วนหนึ่งของหมายเลขที่พิมพ์ เนื่องจากผู้ใช้ไม่สามารถแก้ไขรหัสการโทรที่แสดงได้ พวกเขาอาจลองพิมพ์รหัสใหม่ - ในกรณีนี้ เพื่อหลีกเลี่ยงการมีรหัสการโทรสองรหัสติดกัน เราจะเปิดเมนูแบบเลื่อนลงประเทศโดยอัตโนมัติและใส่รหัสการโทรใหม่ในการป้อนข้อมูลการค้นหา แทน. ดังนั้น หากพวกเขาพิมพ์ +54 อาร์เจนตินาจะถูกไฮไลต์ในรายการแบบเลื่อนลง และพวกเขาสามารถกด Enter เพื่อเลือก โดยอัปเดตรหัสการโทรที่แสดง (คุณลักษณะนี้ต้องเปิดใช้งาน allowDropdown และ countrySearch ) เล่นกับตัวเลือกนี้บน Storybook (โดยใช้ส่วนประกอบ React)

โหมดเข้มงวด
ประเภท: Boolean เริ่มต้น: false
ขณะที่ผู้ใช้พิมพ์อินพุต ให้ละเว้นอักขระที่ไม่เกี่ยวข้อง ผู้ใช้สามารถป้อนได้เฉพาะอักขระตัวเลขและเครื่องหมายบวกเพิ่มเติมที่จุดเริ่มต้นเท่านั้น กำหนดความยาวด้วยความยาวตัวเลขสูงสุดที่ถูกต้อง (ซึ่งคำนึงถึง validationNumberType ) จำเป็นต้องโหลดสคริปต์ utils ดูตัวอย่าง

ใช้FullscreenPopup
ประเภท: Boolean ค่าเริ่มต้น: true on mobile devices, false otherwise
ควบคุมเมื่อรายชื่อประเทศปรากฏเป็นป๊อปอัปแบบเต็มหน้าจอเทียบกับรายการแบบเลื่อนลงแบบอินไลน์ ตามค่าเริ่มต้น จะปรากฏเป็นป๊อปอัปแบบเต็มหน้าจอบนอุปกรณ์เคลื่อนที่ (ขึ้นอยู่กับตัวแทนผู้ใช้และความกว้างของหน้าจอ) เพื่อใช้ประโยชน์จากพื้นที่ที่จำกัดได้ดีขึ้น (คล้ายกับวิธีการทำงานของ จะทำให้เลย์เอาต์เสียหาย คุณต้องแทรกมันไว้หน้าคอนเทนเนอร์แทน (ด้วยคลาส iti )

ตำแหน่งแบบเลื่อนลง
เมนูแบบเลื่อนลงควรปรากฏขึ้นด้านบน/ด้านล่างอินพุตโดยอัตโนมัติ ทั้งนี้ขึ้นอยู่กับพื้นที่ว่าง เพื่อให้ทำงานได้อย่างถูกต้อง คุณจะต้องเริ่มต้นปลั๊กอินหลังจากที่เพิ่ม ลงใน DOM แล้วเท่านั้น

ตัวยึดตำแหน่ง
หากต้องการรับตัวยึดตำแหน่งเฉพาะประเทศโดยอัตโนมัติ เพียงละเว้นแอตทริบิวต์ตัวยึดตำแหน่งบน หรือตั้งค่า autoPlaceholder เป็น "aggressive" เพื่อแทนที่ตัวยึดตำแหน่งที่มีอยู่

กลุ่มอินพุต Bootstrap
จำเป็นต้องมีการแก้ไข CSS สองสามรายการเพื่อให้ปลั๊กอินทำงานได้ดีกับกลุ่มอินพุต Bootstrap คุณสามารถดู Codepen ได้ที่นี่
หมายเหตุ: ขณะนี้มีข้อบกพร่องใน Mobile Safari ซึ่งทำให้เกิดข้อขัดข้องเมื่อคุณคลิกลูกศรแบบเลื่อนลง (สามเหลี่ยม CSS) ภายในกลุ่มอินพุต วิธีแก้ปัญหาที่ง่ายที่สุดคือการลบสามเหลี่ยม CSS ด้วยบรรทัดนี้:

. iti__arrow { border : none; }

มีส่วนร่วม

ดูคำแนะนำในการตั้งค่าโปรเจ็กต์และการเปลี่ยนแปลง รวมถึงวิธีอัปเดตเป็น libphonenumber เวอร์ชันใหม่ วิธีอัปเดตอิมเมจแฟล็ก หรือวิธีเพิ่มการแปลใหม่

การระบุแหล่งที่มา

การทดสอบผู้ใช้ขับเคลื่อนโดยโปรแกรม BrowserStack Open-Source

การทดสอบเบราว์เซอร์ผ่าน

ขยาย
ข้อมูลเพิ่มเติม