テキスト フィールドに入力された郵便番号の前半に基づいて、適切なオプションを自動選択する必要がある SELECT 要素があります。英国の郵便番号はAB12 3CDの形式で、最初のセクションは郡を表す 1 ~ 2 文字と郡内の地域を表す数字で構成されます。最後の 3 文字は、この質問には関係ありません。
ほとんどのフィールドでは最初の文字のみに基づいていますが、一部のオプションでは郵便番号の範囲です。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>
以下の私のコードは現在、値が正確に 2 文字の場合に正しい要素を選択します。ただし、1 文字のコード (バーミンガム) と郵便番号の範囲 (ダンディー) を含むように拡張する必要があります。注: DD1/DD8 の代わりに DD1/DD2 など、特別な値を保証するソリューションがあれば、オプションの値を変更できます。
要するに:
- B2 --> バーミンガム
- BA3 --> お風呂
- DD5 --> 初代ダンディー[DD1]
- DD11→セカンドダンディー【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;
}
}
}