Принудительный ввод цифр для мобильного веб-сайта
-
22-08-2019 - |
Вопрос
Я использовал CSS-свойство '-wap-input-format' для принудительного ввода чисел с использованием "*N".307 Это работает на моем SonyEricsson C702, но не работает на Windows Mobile IE, Windows Mobile с Opera или SonyEricsson P1i.
Решение
Мое предложение также состоит в том, чтобы добавить немного Javascript.Мобильная Opera, а также iPhone, Minimo (мини-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);
}
Надеюсь, это поможет! : )
Другие советы
Вам не нужен javascript в Opera или iphone и, вероятно, не Android тоже.Просто используйте тип ввода "число" из HTML5.Он вернется к вводу текста в браузерах, которые его не поддерживают.
Формат, о котором вы говорите, - это ВКСС Свойство (WAP CSS), и как таковое, не очень широко поддерживается — особенно на современных мобильных устройствах.
В -wap-формат ввода в любом случае это работает не очень хорошо.Например, заставить пользователей вводить числовые данные с десятичными дробями ("2.50") практически невозможно (самое близкое решение:-wap-формат ввода:"*n").
Однако, хотя на это свойство нельзя полагаться при проверке (в любом случае, это все равно должно быть на стороне сервера, как сказал Дарасд), оно может помочь пользователям, автоматически переключая ввод с мобильного устройства на числовой.
То же самое есть говорят, что это возможно для iPhone, добавив "zip" или "phone" к названию поля ввода (например."myfield_zip").Да, я знаю, это неуклюже.
Я бы все равно использовал оба приема, так как это обеспечивает хорошую доступность (и вы можете использовать Javascript в дополнение к ним, если хотите).
<input type='tel' />
отобразит цифровую клавиатуру в браузерах Android и iPhone по умолчанию и Chrome для Android.Это не работает на Windows Phone 7.5, но должно работать на Windows Phone 8, поскольку браузер WP8 основан на IE9.
Используя
<input type='number' />
сделает это тоже, но автоматически удалит начальные нули.