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.
'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