Esas olarak mobil tarayıcılar için olan web uygulaması geliştiriyorum. Sayı türünde giriş alanları kullanıyorum, bu nedenle (çoğu) mobil tarayıcı daha iyi kullanıcı deneyimi için yalnızca sayı klavyesini çalıştırır. Bu web uygulaması esas olarak ondalık ayırıcının nokta değil virgül olduğu bölgelerde kullanılıyor, bu yüzden her iki ondalık ayırıcıyı da kullanmam gerekiyor.
Bütün bu karışıklık nokta ve virgülle nasıl kapatılır?
Bulgularım:
Masaüstü Chrome
- Giriş türü = sayı
- Kullanıcı, giriş alanına "4,55" girer
$("#my_input").val();
"455" değerini döndürür- Girişten doğru değeri alamıyorum
Masaüstü Firefox
- Giriş türü = sayı
- Kullanıcı, giriş alanına "4,55" girer
$("#my_input").val();
"4,55" değerini döndürür- Sorun değil, virgül yerine nokta koyup doğru kayan noktayı elde edebilirim
Android tarayıcı
- Giriş türü = sayı
- Kullanıcı, giriş alanına "4,55" girer
- Giriş odağı kaybettiğinde, değer "4" olacak şekilde kesilir
- Kullanıcı için kafa karıştırıcı
Windows Phone 8
- Giriş türü = sayı
- Kullanıcı, giriş alanına "4,55" girer
$("#my_input").val();
"4,55" değerini döndürür- Sorun değil, virgül yerine nokta koyup doğru kayan noktayı elde edebilirim
Kullanıcının ondalık ayırıcı olarak virgül veya nokta kullanabileceği ve daha iyi bir kullanıcı deneyimi sağlamak için html giriş türünü sayı olarak tutmak istediğim bu tür durumlarda "en iyi uygulamalar" nelerdir?
Virgülü "anında" noktaya dönüştürebilir miyim, anahtar olayları birleştirebilir miyim, sayı girişleriyle çalışıyor mu?
DÜZENLE
Currenlty Herhangi bir çözümüm yok, hangi tipin sayıya ayarlandığı girdiden float değeri (dizi veya sayı olarak) nasıl alınır. Son kullanıcı "4,55" girerse, Chrome her zaman "455", Firefox "4,55" döndürür, bu da bir sorun değildir.
Ayrıca Android'de (4.2 öykünücüsü test edildi), giriş alanına "4,55" girip odağı başka bir yere değiştirdiğimde, girilen sayının "4" olarak kesilmesi oldukça can sıkıcı.
var number = $(...).get(0).valueAsNumber;
if (isNaN(number)) number = parseFloat($(...).val().replace(',', '.');
Ancak bu çözüm yalnızca
.val()
ve Android garip bir şey yapıyor. Sistem dilini uygun bir şeye ayarladığınızda aynı şekilde davranıp davranmadıklarını kontrol edebilir misiniz?