2015-01-20 13 views
5

HTML formum için sayı giriş tipini kullanmak istiyorum.HTML5 girişi yap type = "number" tire kabul ediliyor

Ne yazık ki yalnızca gerçek sayıları, aralarında tire yok kabul eder.

Numara girişi "1234-123456789" gibi sayıları kabul etmek için bir yol var mı?

+1

'Number' input'ları için değerler her zaman geçerli bir kayan noktalı sayı olmalıdır ve bu sayının üzerinde sadece bir tire (yani bir eksi işareti) bulunmalıdır. Bkz. Http://www.w3.org/TR/html5/infrastructure.html#valid-floating-point-number – icke

cevap

4

Değerin doğrulanacağı normal ifadeyi kullanabilirsiniz. Basitçe pattern özniteliğine koyun. Bunu kullanmak için girişinizin type'u text'a değiştirmeniz gerekir.

<input type="text" pattern="[0-9]+([-\,][0-9]+)?" name="my-num" 
       title="The number input must start with a number and use either dash or a comma."/> 
+3

Bunu zaten denediniz. Ama sonra güzel numara klavyesini mobil cihazlarda kaybediyorum. – alexwenzel

+0

@alexwenzel Sorunuzu kod ile güncelleyin :) –

8

Yakın zamanda aynı sorunu yaşadım. Ben bunun yerine type = "text" veya type = "number" yerine type = "tel" kullanarak aldım. 'Tel' kullanarak, sadece mobil cihazlarda sayısal bir klavye elde edebildim ve hala desenimi kullanabiliyordum = "[0-9 \ -] +".

Kullandığım kod İşte. Umarım ihtiyacınız olan şey için yeterlidir. Bir özellik niteliğinin eklenmesi, tür niteliğine göre ayarlanmış herhangi bir model üzerinde geçersiz kılınması için bunu gerçekten yapmanız gerekir.

<input id='zipcode' name='zipcode' type='tel' pattern="[0-9\-]+" placeholder='Zip-code'> 

Elbette bu yalnızca istediğiniz her şey tire ve muhtemelen parantez ise çalışacaktır.

+2

Bu durum erişilebilirlik ile ilgili sorunlara neden olmaz mı? Ekran okuyucuları insanlara telefon numarası girmelerini söyleyecek mi? – Carlin

+0

@ Carlin: İyi nokta. Bu çok iyi ekran okuyucuları ile ilgili bir soruna neden olabilir. Bu yüzden mükemmel bir çözüm değil, ama kabul edilebilir bir fedakarlık olup olmadığı geliştiriciye kalmış. – metamilo

+0

Bunun için teşekkürler, akıllı küçük kesmek. Bir not: Bu, sayı girişlerinde başka bir karaktere izin verilmeyen '/' olmasına da izin veriyor. Cep telefonu numarası tuş takımını kullanan tarih girişleri almak için bunu kullanın. –