Принудительный ввод чисел для мобильного сайта - PullRequest
3 голосов
/ 01 апреля 2009

Я использовал CSS-свойство '-wap-input-format', чтобы принудительно ввести числовой ввод, используя "* N". 307Это работает на моем SonyEricsson C702, но не работает на Windows Mobile IE, Windows Mobile с Opera или SonyEricsson P1i.

Ответы [ 4 ]

2 голосов
/ 01 апреля 2010

Вам не нужен javascript на Opera или iphone и, вероятно, не Android тоже. Просто используйте тип ввода «число» из HTML5. Он вернется к вводу текста в браузерах, которые его не поддерживают.

0 голосов
/ 07 ноября 2012
<input type='tel' /> 

вызовет цифровую клавиатуру в браузерах Android и iPhone по умолчанию и Chrome для Android. Он не работает на Windows Phone 7.5, но должен работать на Windows Phone 8, поскольку браузер WP8 основан на IE9.

Использование

<input type='number' /> 

тоже сделает это, но автоматически удалит начальные нули.

0 голосов
/ 12 октября 2009

Формат, о котором вы говорите, является свойством WCSS (WAP CSS) и поэтому не очень широко поддерживается - особенно в современных мобильных устройствах.

Формат -wap-input-format работает не очень хорошо в любом случае. Например, заполнение пользователем числового ввода десятичными цифрами («2,50») практически невозможно ( ближайшее решение: -wap-input-format: «* n» ).

Однако, хотя на свойство нельзя положиться для проверки (в любом случае, как сказал Дарасд, это все равно должно быть на стороне сервера), оно может помочь пользователям, автоматически переключая ввод мобильного устройства на числовой.

То же самое считается возможным для iPhone путем добавления «zip» или «phone» к имени поля ввода (например, «myfield_zip»). Да, я знаю, это неуклюже.

Я бы по-прежнему использовал оба трюка, так как это вызывает приятную оплату (и вы можете использовать Javascript в дополнение к ним, если хотите).

0 голосов
/ 29 августа 2009

Мое предложение также добавить немного Javascript. Mobile 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);
}

Надеюсь, это поможет! :)

metafilter.com

...