我下面的代码将在您更改国家/地区列表时更改状态下拉列表。 仅当选择国家ID号234和224时,如何才能更改状态列表? 如果选择了另一个国家,则应将其更改为此文本输入框
<input type="text" name="othstate" value="" class="textBox">
表格
<form method="post" name="form1"> <select style="background-color: #ffffa0" name="country" onchange="getState(this.value)"> <option>Select Country</option> <option value="223">USA</option> <option value="224">Canada</option> <option value="225">England</option> <option value="226">Ireland</option> </select> <select style="background-color: #ffffa0" name="state"> <option>Select Country First</option> </select>
JavaScript
<script> function getState(countryId) { var strURL="findState.php?country="+countryId; var req = getXMLHTTP(); if (req) { req.onreadystatechange = function() { if (req.readyState == 4) { // only if "OK" if (req.status == 200) { document.getElementById('statediv').innerHTML=req.responseText; } else { alert("There was a problem while using XMLHTTP:\n" + req.statusText); } } } req.open("GET", strURL, true); req.send(null); } } </script>
只需在执行AJAX请求之前检查countryId值,并且仅在countryId在允许范围内时才执行请求。在countryId不匹配的情况下,我将隐藏选择(也可能清除其值),并显示一个先前已隐藏的现有输入。如果选择允许的国家,则相反。
下面的jQuery示例:
<form method="post" name="form1"> <select style="background-color: #ffffa0" name="country" onchange="getState(this.value)"> <option>Select Country</option> <option value="223">USA</option> <option value="224">Canada</option> <option value="225">England</option> <option value="226">Ireland</option> </select> <select style="background-color: #ffffa0" name="state"> <option>Select Country First</option> </select> <input type="text" name="othstate" value="" class="textBox" style="display: none;"> </form> $(function() { $('#country').change( function() { var val = $(this).val(); if (val == 223 || val == 224) { $('#othstate').val('').hide(); $.ajax({ url: 'findState.php', dataType: 'html', data: { country : val }, success: function(data) { $('#state').html( data ); } }); } else { $('#state').val('').hide(); $('#othstate').show(); } }); });