У меня есть элемент SELECT, в котором мне нужно автоматически выбрать соответствующий параметр на основе первой половины почтового индекса, введенного в текстовое поле. Британские почтовые индексы имеют форму AB12 3CD, где первый раздел состоит из 1-2 букв, представляющих графство, и числа, представляющего область в пределах графства. Последние 3 персонажа не имеют отношения к этому вопросу.Автоматический выбор <option> на основе поля ввода, с некоторыми оговорками
Для большинства полей он основан только на первой букве (-ах), но для некоторых вариантов это диапазон почтовых индексов. HTML должен объяснить это лучше всего:
<select id="country_field">
<option value="">Select</option>
<option value="AB">AB (Aberdeen)</option>
<option value="AL">AL (St. Albans)</option>
<option value="B">B (Birmingham)</option>
<option value="BA">BA (Bath)</option>
...
<option value="DD1">DD 1-7 (Dundee)</option>
<option value="DD8">DD 8-11 (Dundee)</option>
...
</select>
Мой код ниже, в настоящее время выбрать правильный элемент, если значение ровно две буквы. Но мне нужно расширить его, чтобы охватить однобуквенные коды (Бирмингем) и диапазоны почтовых индексов (Данди). Примечание. Я могу изменить значения параметров, если есть решение, которое требует специальных значений, например. DD1/DD2 вместо DD1/DD8.
Вкратце:
- В2 -> Бирмингем
- BA3 -> Ванна
- DD5 -> первый Dundee [DD1]
- DD11 -> второй Dundee [DD8]
Вот Javascript у меня до сих пор ...
window.onload = function()
{
// postcode INPUT field
var zipInput = document.getElementById('zip_field');
// county SELECT field
var ctySelect = document.getElementById('county_field');
zipInput.onchange = function()
{
var zipValue = zipInput.value;
var ctyOptions = ctySelect.options;
for (i = 0; i < ctyOptions.length; i++)
{
if (zipValue.substring(0,2) == ctyOptions[i].value)
ctyOptions[i].selected = true;
}
}
}
Не забудьте поставить ключевое слово var перед «i = 0», чтобы вы не загрязняли глобальную область с переменной i. – wombleton