我一直在使用'-wap-input-format' CSS 属性来强制使用“*N”进行数字输入。307 这适用于我的 SonyEricsson C702,但在 Windows Mobile IE、带有 Opera 的 Windows Mobile 或 SonyEricsson P1i 上失败。
4 回答
You don't need javascript on Opera or iphone and probably not android either. Just use the "number" input type, from HTML5. It'll fall back to a text input on browsers that don't support it.
我的建议也是添加一些 Javascript。Mobile Opera 以及 iPhone、Minimo (mini-mozilla) 等都可以理解 Javascript,至少在一定程度上。
function noNumbers(e) {
var keynum;
var keychar;
var numcheck;
if(window.event) // IE
{
keynum = e.keyCode;
}
else if(e.which) // Netscape/Firefox/Opera
{
keynum = e.which;
}
if((keynum >= 48) && (keynum <= 57)) {
return(true);
}
var good_codes = [8, 14, 15, 37, 38, 39, 40];
for(i = 0; i < good_codes.length; i++) {
if(good_codes[i] == keynum) {
return(true);
}
}
return(false);
}
希望这可以帮助!:)
您正在谈论的格式是WCSS (WAP CSS) 属性,因此并没有得到广泛支持——尤其是在现代移动设备中。
-wap -input-format在任何情况下都不能很好地工作。例如,让用户用小数(“2.50”)填写数字输入几乎是不可能的(最接近的解决方案:-wap-input-format: "*n")。
然而,虽然不能依赖该属性进行验证(这仍然需要在服务器端,无论如何,正如 Darasd 所说),它可以通过自动将移动设备的输入切换为数字来帮助用户。
据说通过将“zip”或“phone”添加到输入字段的名称(例如“myfield_zip”),对于 iPhone来说也是可能的。是的,我知道,这很笨拙。
我仍然会使用这两种技巧,因为它触发了很好的启示(如果你愿意,除了它们之外,你还可以使用 Javascript)。
<input type='tel' />
will bring up a numeric keypad on Android and iPhone default browsers and Chrome for Android. It does not work on Windows Phone 7.5, but should on Windows Phone 8 since WP8's browser is based on IE9.
Using
<input type='number' />
will do this too, but will automatically remove leading zeros.