2013-07-10 2 views
0

В моем шаблоне у меня есть стране поле выбора, и область элемент, который динамически изменяться, основываясь на страны. Например, если я выберу Соединенные Штаты, провинция будет выбираться, включая США. Если я выберу другую страну, провинция будет только текстовым полем. Я знаю, что я должен сделать это с помощью Javascript, но я хочу знать, что в этом случае лучше всего подходит. Любое предложение?изменение формы наилучшей практики

+1

Вы можете использовать Javascript, чтобы отображать либо поле выбора с провинциями, либо поле ввода текста. Если вы хотите иметь разные списки провинций в зависимости от выбранной страны, вы можете использовать AJAX и загружать соответствующий список провинций всякий раз, когда страна меняется. –

ответ

1

Этот вопрос возникает почти ежедневно в stackoverflow ... Как обрабатывать sub-select как country-> state ...?

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

Не получать все возможные суб-выбирает при визуализации формы в первый раз. Это может легко привести к тяжелым запросам базы данных, если вы показываете что-то вроде страны -> штат -> город, например ... но страна -> состояние для всех стран уже слишком много.

Если форма была отправлена ​​с использованием кнопки «показать состояния», добавьте связанный суб-выбор в форму вместе с кнопкой «показать города» или если никакие другие подвыборки не будут загружены .. с окончательным " сохранить ".

Таким образом, пользователь без JavaScript может использовать двойной выбор без использования вначале ненужных запросов подзаголовка. Просто сокрытие второго выбора с помощью JS составляет не передовая практика.

Прогрессивное улучшение через JavaScript затем будет AJAX -Loading т.е. JSON список стран для страны, убрав «показать состояния» кнопку, визуализации данных с помощью JS шаблонов двигателей, как рули или усы и добавление кнопки «Сохранить».

Таким образом, вам не нужно отправлять слишком много повторных данных в браузер клиента (опция, опция, опция ...).

Последним шагом было бы кэширование клиента и серверной части, чтобы ускорить время загрузки - возможно, даже включать в себя некоторую предварительную загрузку фона, т. Е. Лучшие 5 вариантов предпочтительного языка клиента.

+0

не может быть яснее. Большое спасибо! –

Смежные вопросы