javascript - 从 ASP 中的国家/地区选择中填充州/省/自治区/直辖市下拉列表

标签 javascript asp-classic

我有一个旧的经典 asp 应用程序需要更新。我需要添加 2 个下拉菜单,第二个下拉菜单需要根据第一个下拉菜单(例如国家和州)进行填充。你如何使用 JavaScript 做到这一点?

最佳答案

更新:根据您下面的评论,我更新了我的回复,以包含可以执行您想要的操作的代码。您可以使用 optgroup 元素根据选择的国家/地区过滤options,而无需使用 Ajax。

第一种方式:(optgroup过滤)

Working example on jsFiddle .

HTML:

<select id="C_Country" name="C_Country" aria-required="true" class="required">
    <option value="">-- Please Select --</option>
    <option value="USA">United States</option>
    <option value="CA">Canada</option>
</select>
<p>
    <label for="C_State_Prov">State or Province <span title="required">*</span>
    </label>
</p>
<select id="C_State_Prov" name="C_State_Prov" aria-required="true" class="required">
    <option value="" selected="">-- Please Select --</option>
    <optgroup label="United States">
        <option value="AK">Alaska</option>
        <option value="AL">Alabama</option>
        <option value="AR">Arkansas</option>
        <option value="AZ">Arizona</option>
        <option value="CA">California</option>
    </optgroup>
    <optgroup label="Canada">
        <option value="AB">Alberta</option>
        <option value="BC">British Columbia</option>
        <option value="MB">Manitoba</option>
    </optgroup>
</select>

JavaScript:

var state_province = $('#C_State_Prov option, #C_State_Prov optgroup');

state_province.hide();

$('#C_Country').change(function () {
    state_province.hide();
    $("#C_State_Prov optgroup[label='" + $(this).find(':selected').html() + "']")
        .children()
        .andSelf()
        .show();
});

第二种方式:(Ajax)

Working example on jsFiddle .

以下是如何实现此目的的粗略想法。 jQuery 中定义的 URL 应指向服务器端代码将根据用户选择的国家/地区生成所需 HTML 的位置(而不是在 JavaScript 中定义为变量)。

HTML:

<form action="#">
    <div>
        <label for="country">Country:</label>
    </div>
    <div>
        <select name="country" id="country">
            <option value="">Please select</option>
            <option value="us">United States</option>
        </select>
    </div>
    <div id="stateContainer" class="hidden">
        <div>
            <label for="state">State</label>
        </div>
        <div>
            <select id="state" name="state"></select>
        </div>
    </div>
    <div>
        <input type="submit" id="submit" name="submit" value="Submit">
    </div>
</form>

CSS:

.hidden {
    display: none;
}

JavaScript:

var $country = $("#country"),
    $stateContainer = $("#stateContainer"),
    $state = $("#state"),
    url = "http://jsfiddle.net/htmled/KZ4jd/",
    html = '<option value="al">Alabama</option><option value="ar">Arkansas</option>',
    countryVal;

$country.change(function () {
    countryVal = $country.val();
    $stateContainer.show();
    $state.html(html).load(loadUrl);
});

关于javascript - 从 ASP 中的国家/地区选择中填充州/省/自治区/直辖市下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14783815/

相关文章:

iis - session 在 iis 服务器 8 上的经典 asp 中不起作用

javascript - Google Maps Address 而不是 LatLng GeoCode

redirect - 书签页面重定向

javascript - JQuery 将错误的值附加到变量

javascript - 计算出执行 AJAX 请求需要多少时间

c# - 实现 Flash 网站横幅的最佳方式

asp-classic - ASP 3.0 声明不包含 ADOVBS.inc 的 ADO 常量

javascript - 将 javascript 变量发送到经典的 asp

javascript - 检测点击是否在 react 组件内部或不在 typescript 中

javascript - Hello World - Backbone + Firebase + Backfire