ฉันกำลังสร้างเว็บแอปซึ่งส่วนใหญ่สำหรับเบราว์เซอร์บนมือถือ ฉันใช้ช่องป้อนข้อมูลที่มีประเภทตัวเลขดังนั้นเบราว์เซอร์มือถือ (ส่วนใหญ่) จึงเรียกใช้แป้นพิมพ์ตัวเลขเท่านั้นเพื่อประสบการณ์การใช้งานที่ดีขึ้น เว็บแอปนี้ส่วนใหญ่จะใช้ในภูมิภาคที่ตัวคั่นทศนิยมเป็นลูกน้ำไม่ใช่จุดดังนั้นฉันต้องจัดการตัวคั่นทศนิยมทั้งสอง
จะปกปิดความยุ่งเหยิงทั้งหมดนี้ด้วยจุดและลูกน้ำได้อย่างไร
การค้นพบของฉัน:
Chrome บนเดสก์ท็อป
- ประเภทอินพุต = หมายเลข
- ผู้ใช้ป้อน "4,55" ในช่องป้อนข้อมูล
$("#my_input").val();
ส่งคืน "455"- ฉันไม่สามารถรับค่าที่ถูกต้องจากการป้อนข้อมูล
เดสก์ท็อป Firefox
- ประเภทอินพุต = หมายเลข
- ผู้ใช้ป้อน "4,55" ในช่องป้อนข้อมูล
$("#my_input").val();
ผลตอบแทน "4,55"- ไม่เป็นไรฉันสามารถแทนที่ลูกน้ำด้วยจุดและทำให้ค่าลอยถูกต้องได้
เบราว์เซอร์ Android
- ประเภทอินพุต = หมายเลข
- ผู้ใช้ป้อน "4,55" ในช่องป้อนข้อมูล
- เมื่ออินพุตสูญเสียโฟกัสค่าจะถูกตัดให้เหลือ "4"
- สร้างความสับสนให้กับผู้ใช้
Windows Phone 8
- ประเภทอินพุต = หมายเลข
- ผู้ใช้ป้อน "4,55" ในช่องป้อนข้อมูล
$("#my_input").val();
ผลตอบแทน "4,55"- ไม่เป็นไรฉันสามารถแทนที่ลูกน้ำด้วยจุดและทำให้ค่าลอยถูกต้องได้
"แนวทางปฏิบัติที่ดีที่สุด" ในสถานการณ์ประเภทนี้คืออะไรเมื่อผู้ใช้อาจใช้ลูกน้ำหรือจุดเป็นตัวคั่นทศนิยมและฉันต้องการให้ประเภทอินพุต html เป็นตัวเลขเพื่อมอบประสบการณ์การใช้งานที่ดีขึ้น
ฉันสามารถแปลงเครื่องหมายจุลภาคเป็นจุด "ทันที" เพื่อเชื่อมโยงเหตุการณ์สำคัญได้หรือไม่มันทำงานกับอินพุตตัวเลขได้หรือไม่
แก้ไข
Currenlty ฉันไม่มีวิธีแก้ปัญหาวิธีรับค่า float (เป็นสตริงหรือตัวเลข) จากอินพุตที่กำหนดประเภทเป็นตัวเลข หาก enduser ป้อน "4,55" Chrome จะส่งกลับ "455" เสมอ Firefox จะส่งคืน "4,55" ซึ่งก็ใช้ได้
นอกจากนี้มันค่อนข้างน่ารำคาญที่ใน Android (โปรแกรมจำลอง 4.2 ที่ทดสอบแล้ว) เมื่อฉันป้อน "4,55" ในช่องป้อนข้อมูลและเปลี่ยนโฟกัสไปที่อื่นหมายเลขที่ป้อนจะถูกตัดทอนเป็น "4"
var number = $(...).get(0).valueAsNumber;
if (isNaN(number)) number = parseFloat($(...).val().replace(',', '.');
แต่วิธีแก้ปัญหานั้นใช้ได้เฉพาะเมื่อ ตัวเลขที่ใส่มีเพียง 1 ลูกน้ำและไม่มีจุดพิเศษ ...
.val()
และ Android ก็ทำอะไรแปลก ๆ คุณสามารถตรวจสอบได้หรือไม่ว่าพวกเขาทำงานเหมือนกันเมื่อคุณตั้งค่าภาษาของระบบให้เหมาะสมหรือไม่?