Android'de mobil web sitesinde klavyeyi sayılarla zorlama


94

Bir mobil web sitem var ve içinde aşağıdaki gibi bazı HTML inputöğeleri var:

<input type="text" name="txtAccessoryCost" size="6" />

Siteyi WebViewolası bir Android 2.1 tüketimi için bir Android uygulaması olacak şekilde yerleştirdim.

Bu HTML inputöğesi odaklandığında klavyeyi varsayılan harf yerine sayılarla elde etmek mümkün müdür ?

Veya, bir HTML öğesi için uygun değilse , tüm uygulama için (belki Manifest dosyasında bir şey) ayarlamak mümkün müdür ?


Android'e ek olarak iOS'ta sayısal bir tuş takımı istiyorsanız, şunu yapmalısınız: stackoverflow.com/a/31619311/806956
Aaron Grey

2
inputmode="number"Nitelik sonlarında 2019 yılında doğru cevap gibi görünüyor: developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/... . Bu yorumun yapıldığı sırada en yüksek oyu alan yanıt type="number", kendi tuzaklarından bazılarıyla birlikte gelen; inputmodeGirdinin kendisinin davranışı / kısıtlamaları yerine yalnızca sanal klavye görüntüsünü etkiliyor gibi görünüyor.
SheffDoinWork

Yanıtlar:


114
<input type="number" />
<input type="tel" />

Bunların her ikisi de giriş odak kazandığında sayısal tuş takımını sunar.

<input type="search" /> ekstra arama düğmesi olan normal bir klavye gösterir

Diğer her şey standart klavyeyi getiriyor gibi görünüyor.


Bugün bir göz atacak ve işe yarayıp yaramayacağını size bildirecek. Teşekkür ederim Richard!
ncakmak

1
Merhaba Richard. Hiçbiri işe yaramadı, giriş alanı hala standart klavyeyi açıyor.
ncakmak


1
Not için klavye type="tel"kötüdür için klavyenin daha yazarak numaraları için type="number".
Rory O'Kane

2
<input type="text" pattern="\d*" /> ayrıca sayısal klavyeyi açar, ancak yalnızca iOS'ta, Android'de değil .
Rory O'Kane

52

ÖNEMLİ NOT

Bunu yorum olarak değil cevap olarak gönderiyorum çünkü oldukça önemli bir bilgi ve bu formatta daha fazla dikkat çekecek.

Diğer arkadaşların da belirttiği gibi, bir cihazı size type="number"/ ile sayısal bir klavye göstermeye zorlayabilirsiniz type="tel", ancak bu konuda son derece dikkatli olmanız gerektiğini vurgulamalıyım .

Birisi sıfırlarla başlayan bir sayı beklerse, 000222bazı tarayıcılar (örneğin masaüstü Chrome) sunucuya göndereceği için sorun yaşama olasılığı yüksektir 222, ki bu onun istediği şey değildir.

Hakkında type="tel"Benzer bir şey söyleyemem ama kişisel olarak kullanmıyorum, çünkü farklı telefonlardaki davranışları değişebilir. Kendimi pattern="[0-9]*"Android'de çalışmayan basitlikle sınırladım


4
Otomatik yeniden biçimlendirme muhtemelen gerçekleşmiyor type="tel". Spesifikasyon notları , değerinin geçerli bir kayan noktalı sayı olmasını gerektiren telbelirli bir sözdiziminin aksine number, herhangi bir sözdizimi gerektirmez .
Rory O'Kane

Ne kadar kötü Mobil müşterilerimiz için form sürecini hızlandırmaya çalışıyoruz ve bu bariz bir çözüm gibi görünüyor, ancak aynı zamanda güvenilir bir şey istiyoruz. Bu yöntemi kullanmaya karşı güçlü bir uyarı gönderdiniz. Acaba biraz daha detaylandırır mısınız?
Philll_t

@Philll_t, bir kullanıcının '000222' verisi göndermesi gerekiyor, ancak sunucu tarafında siz bunun yerine '222' alıyorsunuz. İşlevselliğin tamamen bozuk olduğunu görmüyor musunuz? Sunucu yanlış veri alıyor.
user907860

Evet, ne demek istediğini anlıyorum, ama şunu söylüyorum: Kullanıcıların yüzde kaçı bunu görüyor? Bu, Safari ve Chrome gibi büyük mobil tarayıcılarda bir sorun mu? Bunun bir sorun olduğunu nasıl anlarsınız, sağlayabileceğiniz bir bağlantı var mı? Sana inanıyorum, sadece kendimi araştırmak istiyorum ve bunu öneren hiçbir şey görmedim, belki beni doğru yöne yönlendirebilirsin. Sadece müşteri tabanımızın bundan yararlanıp yararlanamayacağını görmeye çalışıyoruz.
Philll_t

1
@Philll_t Bence bu uyarı için en iyi örnek Doğum Tarihi giriş alanları için. Gün, ay ve yılı manuel olarak girmeniz gereken yer. Ve evet, yaygın olarak kullanılan tarih seçiciler yerine bu stili kullanan birçok web sitesi var. Doğum Tarihi giriş alanlarındaki sorunla ilgili olarak, "0" ile başlayan Gün veya Ayınızı girdiğiniz
zamandır

9

Bu çalışmalı. Ama bir Android telefonda aynı sorunlarım var.

<input type="number" /> <input type="tel" />

Jquerymobile çerçevesini dahil etmediysem, tuş takımının iki tür alanda doğru şekilde gösterdiğini öğrendim.

Ama gerçekten jquerymobile kullanmanız gerekiyorsa, bu sorunu çözmek için bir çözüm bulamadım.

GÜNCELLEME: Eğer form etiketinin

<div data-role="page"> 

Sayı tuş takımı gösterilmiyor. Bu bir hata olmalı ...


Bu konuyu araştırdığınız için teşekkürler. Yine de anladığımdan emin değilim: "form etiketi div [data-role = page] dışında depolanıyorsa". Benim durumumda sorun, bir div [data-role = page] içine güzelce yerleştirilmiş formlarda ortaya çıkıyor. Belki de sorun, bu sayfaların benim durumumda diyaloglar olarak görüntüleniyor olmasıdır?
Wytze


3

Bazı tarayıcılar, giriş türü "sayı" olduğunda sunucuya sıfır gönderiyor. Bu yüzden sayısal bir tuş takımını yüklemek için jquery ve html karışımı kullanıyorum ve ayrıca değerin sayı olarak değil metin olarak gönderildiğinden emin olun:

$(document).ready(function(){
$(".numberonly").focus(function(){$(this).attr("type","number")});
$(".numberonly").blur(function(){$(this).attr("type","text")});
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="numberonly">


3
Bu, Android için Chrome'da can sıkıcı bir soruna neden oluyor. Girilecek hafifçe dokunduğunuzda klavye yok değil gelip. Daha sonra metin kutusuna ikinci kez dokunmanız gerekir ve ardından klavye yalnızca sayı klavyesini oluşturur. Gerçekten bir type="digits"seçeneğimiz olmasını isterdim, bu yüzden bu hack'lere sahip olmamız gerekmezdi. Demek istediğim, sıfır önde gelen bir sayı gibi değil, o kadar nadirdir (ABD'deki Posta Kodları bariz bir örnektir).
Jaxidian

2
Ben de aynı problemle karşılaşıyorum! alanı "type = tel" olarak ayarlamak şimdiye kadarki en iyi çözümdür.
Ali Sheikhpour

-2

input type = number

Bir sayı girişi sağlamak istediğinizde, HTML5 input type = "number" özellik değerini kullanabilirsiniz.

<input type="number" name="n" />

İşte iPhone 4'te gelen klavye:

HTML5 giriş türü numarasının iPhone ekran görüntüsü Android 2.2 bu klavyeyi tür = sayı için kullanır:

HTML5 giriş türü numarasının Android Ekran Görüntüsü


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.