Является текстовое поле автоматического заполнения для ввода адресов хорошей идеей?

Как обычно, есть несколько способов сделать одно и то же, но я бы не стал использовать Number.prototype.toLocaleString, поскольку он может возвращать разные значения в зависимости от настроек пользователя.

Я также не рекомендую расширять Number.prototype - расширение прототипов нативных объектов является плохой практикой, поскольку оно может вызывать конфликты с чужим кодом (например, библиотеками / фреймворками / плагинами) и может быть несовместимо с будущими реализациями JavaScript / версии.

Я считаю, что Регулярные выражения являются лучшим подходом к решению проблемы, вот моя реализация:

/**
 * Converts number into currency format
 * @param {number} number   Number that should be converted.
 * @param {string} [decimalSeparator]    Decimal separator, defaults to '.'.
 * @param {string} [thousandsSeparator]    Thousands separator, defaults to ','.
 * @param {int} [nDecimalDigits]    Number of decimal digits, defaults to `2`.
 * @return {string} Formatted string (e.g. numberToCurrency(12345.67) returns '12,345.67')
 */
function numberToCurrency(number, decimalSeparator, thousandsSeparator, nDecimalDigits){
    //default values
    decimalSeparator = decimalSeparator || '.';
    thousandsSeparator = thousandsSeparator || ',';
    nDecimalDigits = nDecimalDigits == null? 2 : nDecimalDigits;

    var fixed = number.toFixed(nDecimalDigits), //limit/add decimal digits
        parts = new RegExp('^(-?\\d{1,3})((?:\\d{3})+)(\\.(\\d{'+ nDecimalDigits +'}))? 

отредактировано 2010/08/30: добавлена ​​опция для установки количества десятичных цифр. отредактировано 2011/08/23: добавлена ​​опция для установки количества десятичных цифр на ноль.

).exec( fixed ); //separate begin [$1], middle [$2] and decimal digits [$4] if(parts){ //number >= 1000 || number <= -1000 return parts[1] + parts[2].replace(/\d{3}/g, thousandsSeparator + '[110]amp;') + (parts[4] ? decimalSeparator + parts[4] : ''); }else{ return fixed.replace('.', decimalSeparator); } }

отредактировано 2010/08/30: добавлена ​​опция для установки количества десятичных цифр. отредактировано 2011/08/23: добавлена ​​опция для установки количества десятичных цифр на ноль.

9
задан Matt 12 June 2013 в 17:58
поделиться

4 ответа

Обсуждение нескольких раскрывающихся списков и одного текстового поля вызывает некоторые интересные дискуссии об удобстве использования. Обычно используются отдельные поля штата и страны. Возможно, вы нарушаете правило «не заставляйте меня думать», но автозаполнение помогает объяснить, что требуется.

Якоб Нильсен утверждает, что пользователям проще использовать отдельные текстовые поля для адресов:

Такая информация часто зашита в пальцы пользователей, и необходимость выберите такие параметры из разрывов меню стандартная парадигма для входа информации и даже может создать больше работают для пользователей ( http://www.useit.com/alertbox/20001112.html )

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

Вам нужно оценить свою целевую аудиторию и позвонить.

4
ответ дан 4 December 2019 в 22:29
поделиться

One concern is whether it works without JavaScript or not. If your customers for some reason or other (there are several of them) do not have JavaScript enabled, or doesn't even have browsers supporting it (e.g. on a cell phone), you could get malformed input that your site may not handle correctly.

4
ответ дан 4 December 2019 в 22:29
поделиться

Для записи, почтовый индекс не всегда однозначно идентифицирует город. см. здесь Of course in practice, it usually does, and even if it doesn't, it would reduce the options considerably.

0
ответ дан 4 December 2019 в 22:29
поделиться
  1. Это не проблема. Как только появится автозаполнение, люди поймут.

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

  3. Когда ваш магазин будет расти, вам понадобится чачинг. В любом случае. На всех уровнях.

  4. Я согласен . Просто исправьте некоторые незначительные проблемы.: -)

0
ответ дан 4 December 2019 в 22:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: