Проверка страны / города / штата - PullRequest
2 голосов
/ 08 февраля 2010

Я хочу сделать следующие вещи, используя PHP и jQuery

https://www.careerbuilder.com/share/register.aspx?sc_cmp1=JS_LoginASPX_RegNow

Steps

  1. Выберите страну из выпадающего списка.
  2. Раскрывающийся список городов автоматически заполнится списком городов выбранной страны.
  3. Если для этой страны доступно состояние, тогда список состояний будет виден со списком всех состояний этой страны.

Затем мне нужно проверить выбранный город, штат и страну.

У вас есть идеи?

Заранее спасибо

Ответы [ 7 ]

13 голосов
/ 08 февраля 2010

Если вы хотите, чтобы иностранцы могли легко вводить адрес, , пожалуйста, просто предложите текстовое поле, в котором адрес можно ввести в виде отформатированного текста. Очень немногие страны используют штат (или что-то подобное) в качестве части адреса, и я не понимаю, почему вы хотите предложить раскрывающийся список с городами. Список немецких городов (или более правильных, действительных названий мест в почтовом адресе) будет содержать около 23 000 записей. Как вы думаете, проще, введите адрес или попробуйте найти название места в таком списке_

1 голос
/ 12 мая 2010

Выберите страну из выпадающего списка.

Я предполагаю, что это HTML SELECT, заполненный из таблицы базы данных.

Список городов будет заполнен автоматически со списком городов выбранной страны.

Не делайте этого. Вам нужен jQuery Автозаполнение , когда пользователь начинает печатать, а затем вы извлекаете возможные записи из вашей базы данных.

Если состояние доступны для этой страны, то государство список будет виден со всеми состояниями список этой страны.

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

Тогда мне нужно подтвердить выбранный город, штат и страна.

Обратите внимание, что штат / провинция и страна являются SELECT элементами управления, поэтому они никогда не должны давать неверный результат, и проверка названий городов невозможна.

1 голос
/ 12 мая 2010

Мы используем ServiceObjects.com для проверки адреса.

Поэтому мы позволяем пользователю вводить свой адрес в текстовом поле (более или менее), а затем просто отправляем информацию об адресе на ServiceObjects.com и используем нормализованный / исправленный адрес, возвращаемый их веб-службой.

Это не дает прямого ответа на ваш вопрос, но, возможно, предоставляет альтернативное решение корневой проблемы.

0 голосов
/ 19 марта 2018

  var app = angular.module('ganesh', []);

	app.controller('MainCtrl', function($scope) {
  $scope.name = "Charlie's Programming..........";
  $scope.countries = {

                'USA': {
                    'Alabama': ['Montgomery', 'Birmingham'],
                    'California': ['Sacramento', 'Fremont'],
                    'Illinois': ['Springfield', 'Chicago']
                },
               'India': {
						 'AndamanandNicobarIslands' : {	},
						 'AndhraPradesh' : { },
						 'ArunachalPradesh' : { },
						 'Assam' : { },
						 'Bihar' : { },
						 'Chandigarh' : { },
						 'Chhattisgarh' : { }, 
						 'DadraandNagarHaveli' : { },
						 'DamanandDiu' : { }, 
						 'Delhi' : { },
						 'Goa' : { },
						 'Gujarat' : { }, 
						 'Haryana' : { },
						 'HimachalPradesh' : { },
						 'JammuandKashmir' : { }, 
						 'Jharkhand' : { }, 
						 'Karnataka' : { },
						 'Kerala' : { },
						 'Lakshadweep' : { }, 
						 'MadhyaPradesh' : { }, 
						 'Maharashtra' : { 
										 'Ahmednagar' : [   ],
										 'Akola|Alibag' : [   ],
										 'Amaravati' : [   ],
										 'Arnala' : [   ], 
										 'Aurangabad' : [   ],
										 'Aurangabad' : [   ],
										 'Bandra' : [   ], 
										 'Bassain' : [   ], 
										 'Belapur' : [   ],
										 'Bhiwandi' : [   ], 
										 'Bhusaval' : [   ], 
										 'Borliai-Mandla' : [   ],
										 'Chandrapur' : [   ], 
										 'Dahanu' : [   ],
										 'Daulatabad' : [   ], 
										 'Dighi(Pune)' : [   ],
										 'Dombivali' : [   ],
										 'Goa' : [   ],
										 'Jaitapur' : [   ],
										 'Jalgaon' : [   ],
										 'JawaharlalNehru(NhavaSheva)' : [   ], 
										 'Kalyan' : [   ],
										 'Karanja' : [   ],
										 'Kelwa' : [   ], 
										 'Khopoli' : [   ],
										 'Kolhapur' : [   ], 
										 'Lonavale' : [   ], 
										 'Malegaon' : [   ], 
										 'Malwan' : [   ], 
										 'Manori' : [   ],
										 'MiraBhayandar' : [   ],
										 'Miraj' : [   ],
										 'Mumbai(exBombay)' : [   ],
										 'Murad' : [   ],
										 'Nagapur' : [   ],
										 'Nagpur' : [   ], 
										 'Nalasopara' : [   ],
										 'Nanded' : [   ],
										 'Nandgaon' : [   ],
										 'Nashik' : ['422606', '422004', '422002', '422003'], 
										 'NaviMumbai' : [   ],
										 'Nhave' : [   ], 
										 'Osmanabad' : [   ],
										 'Palghar' : [   ], 
										 'Panvel' : [   ], 
										 'Pimpri' : [   ], 
										 'Pune' : [   ], 
										 'Ratnagiri' : [   ], 
										 'Sholapur' : [   ],
										 'Shrirampur' : [   ],
										 'Shriwardhan' : [   ],
										 'Tarapur' : [   ],
										 'Thana' : [   ], 
										 'Thane' : [   ], 
										 'Trombay' : [   ],
										 'Varsova' : [   ], 
										 'Vengurla' : [   ],
										 'Virar' : [   ], 
										 'Wada' : [   ], 
										 'Panvel' : [   ],
										 'Pimpri' : [   ], 
										 'Pune' : [   ], 
										 'Ratnagiri' : [   ],
										 'Sholapur' : [   ],
										 'Shrirampur' : [   ],
										 'Shriwardhan' : [   ], 
										 'Tarapur' : [   ], 
										 'Thana' : [   ], 
										 'Thane' : [   ], 
										 'Trombay' : [   ], 
										 'Varsova' : [   ],
										 'Vengurla' : [   ], 
										 'Virar' : [   ], 
										 'Wada' : [   ], 
											},
						 'Manipur' : { },
						 'Meghalaya' : { },
						 'Mizoram' : { }, 
						 'Nagaland' : { }, 
						 'Orissa' : { },
						 'Pondicherry' : { },
						 'Punjab' : { }, 
						 'Rajasthan' : { }, 
						 'Sikkim' : { }, 
						 'TamilNadu' : { }, 
						 'Telangana' : { },
						 'Tripura' : { },
						 'Uttaranchal' : { },
						 'UttarPradesh' : { }, 
						 'WestBengal' : { }
						 
                  
                },
                'Australia': {
                    'New South Wales': ['Sydney'],
                    'Victoria': ['Melbourne']
                }
            };

			$scope.GetSelectedCountry = function () {
                $scope.strCountry = document.getElementById("country").value;
            };
            $scope.GetSelectedState = function () {
                $scope.strState = document.getElementById("state").value;
            };
            $scope.GetSelectedcity = function () {
                $scope.strCity = document.getElementById("city").value;
            };
             $scope.GetSelectedpin = function () {
                $scope.strPin = document.getElementById("pin").value;
            };
});
  <!DOCTYPE html>
<html ng-app="ganesh">

  <head>
    <meta charset="utf-8" />
    <title>Charlie</title>
    <script>document.write('<base href="' + document.location + '" />');</script> 
    <script data-require="angular.js@1.4.x" src="https://code.angularjs.org/1.4.12/angular.js" data-semver="1.4.9"></script>	
 </head>

  <body >	
  <div ng-controller="MainCtrl">
  <p>Welcome to {{name}}</p>
    <label for="country">Country *</label>
 <select id="country" ng-model="statessource" ng-options="country for (country, states) in countries"
                ng-change="GetSelectedCountry()">
 <option value=''>Select</option>
</select>    
 <label for="state">State *</label>
<select id="state" ng-disabled="!statessource" ng-model="model.state" ng-options="state for (state,city) in statessource"
         ng-change="GetSelectedState()"><option value=''>Select</option>
 </select>
  <label for="city">City *</label>
 <select id="city" ng-disabled="!model.state" ng-model="model.city" ng-options="city for (city, pin)  in model.state"
         ><option value=''>Select</option>
 </select>
 <label for="pin">Pincode *</label>
 <select id="pin" ng-disabled="!model.city" ng-model="model.pin" ng-options="pin for pin  in model.city"
         ><option value=''>Select</option>
 </select>
 </div>
  </body>

</html>
0 голосов
/ 10 мая 2013

распечатать выпадающий список состояний сделать список идентификаторов состояния получить или опубликовать идентификатор методами, создайте таблицу списка городов sql и используйте php для вызова таблицы, это займет больше времени, чем jquery, но это работает

0 голосов
/ 09 февраля 2010

Это очень стандартный сценарий AJAX. Фактически, именно та проблема, которую вы описываете, является, пожалуй, самым распространенным вводным примером Ajax. Вы указали PHP и jQuery в качестве тегов в своем вопросе; их совместное использование сделает решение очень простым.

Я предлагаю поискать примеры jQuery Ajax с PHP. Вы почти наверняка найдете именно то, что ищете.

0 голосов
/ 09 февраля 2010

Я сталкиваюсь с подобной проблемой. Я не знаю, так ли это с вами, но в моем случае мы должны быть уверены, что введенные города действительно являются существующими. Позже в проекте мы хотим иметь возможность собирать записи, которые находятся в одном городе, в любой точке мира. И эти результаты должны быть точными. Таким образом, у нас не может быть людей, приезжающих в Филадельфию и Филадельфию также. Мы также хотим, чтобы люди использовали английские названия городов, а не названия на своем родном языке.

Я нашел несколько открытых баз данных стран, штатов и городов. Например, здесь: MaxMind . Но это список из примерно 3 миллионов городов, и я нашел еще один из более чем 6 миллионов. Я настроил это именно так, как вы описываете. Выберите страну, затем найдите города в ней с помощью вызова AJAX и заполните выпадающий список. Для такой страны, как Нидерланды, это занимает около 2 секунд, но загрузка просто неприемлема, например, для Китая или России. И списки огромны и совсем не так удобны для пользователя.

Так что я полагаю, что лучше позволить людям просто вводить их в текстовое поле, когда не так важно, чтобы города действительно совпадали. Сейчас мы смотрим на API Карт Google, чтобы решить нашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...