Требуется предложение для NON JavaScript версии автозаполнения ввода - PullRequest
2 голосов
/ 21 сентября 2010

Я создаю приложение, которое сильно зависит от jQuery.Большую часть этого я могу обработать без использования JS и все еще иметь работающий сайт, однако есть один момент, который ускользает от меня.(обратите внимание, я использую ASP.NET MVC, но это не должно иметь значения в этом случае)

У меня есть поле ввода, в котором широко используется автозаполнение jQuery-UI.Поведение очень простое.Пользователю предлагается ввести свой город, но ему предоставляется список автозаполнения действительных городов.Если город недействителен, проверка на стороне сервера запускается и просит их повторить попытку.

Если они выбирают действительный город, метод jQuery обновляет скрытое поле, содержащее CityID выбранного города.Это работает феноменально хорошо, и мне очень нравится производительность.

Вот здесь и проблема.Если JS не доступен в браузере, поле ID не обновляется, и, следовательно, DB не обновляется.Я вообще не использую ввод автозаполнения на стороне сервера, только поле ID.Какое было бы хорошее решение, чтобы обойти эту проблему?

Ответы [ 4 ]

3 голосов
/ 21 сентября 2010

По умолчанию выбран элемент, содержащий города в качестве параметров и идентификаторы в качестве значений, и измените его на поле автозаполнения со сценарием при загрузке страницы.

1 голос
/ 21 сентября 2010

Если по какой-то причине ответ sje397 не работает для вас (это элегантное решение, если автоматический выбор города не основан на каком-либо другом поле на экране, таком как почтовый индекс или штат), просто ЗАПИШИТЕ оба поля,При оценке данных POSTed, если в текстовом поле CITY есть данные, а в скрытом поле их нет, оцените введенный город, используя тот же метод проверки, который использовался обратным вызовом jquery.Если в скрытом поле есть данные, вы предполагаете, что JavaScript включен, и используете вашу текущую логику.

1 голос
/ 21 сентября 2010

Несколько опций:

1 - изначально обслуживать HTML, который показывает «скрытый» ввод, но не включает «автозаполнение».Когда JS загружается, имейте функцию, редактирующую DOM в вашей текущей ситуации.

2 - по умолчанию используется форма для отправки данных «автозаполнения» на сервер.Используйте javascript для редактирования функции «send», чтобы она переключалась на «скрытый» ввод.

0 голосов
/ 21 сентября 2010

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

...