【问题标题】:Chained Select with NO jQuery or Ajax没有 jQuery 或 Ajax 的链式选择
【发布时间】:2012-03-29 00:27:24
【问题描述】:

我正在使用 XAMPP Lite - USB 版本,发现 jQuery 链式选择框脚本不起作用,因为它们依赖于在我的 XAMPP 上不起作用的 AJAX。

我有两个选择框:

<label>Province</label>
<select name="province"> 
<option value="ontario">Ontario</option>
<option value="quebec">Quebec</option>
<option value="novascotia">Nova Scotia</option>
</select> 

<label>city</label>
<select name="city"> 
</select> 

我需要能够选择一个省份并将不同的城市加载到“城市”名称选择中。我必须这样做没有 jQuery 或 Ajax。仅供参考,保存所有数据的javascript数组变量必须有多长并不重要。我只需要有人帮我写剧本。

【问题讨论】:

  • 那么,到目前为止你有什么不工作的?
  • 为什么不能使用jQuery?可以在没有 ajax 调用的情况下使用 javascript/jQuery ......虽然它会有点 hackish - 设置一个与每个省相对应的城市 js 数组,并使用 jQuery 来更改基于所选省份的选择选项。

标签: javascript forms select chained


【解决方案1】:

here's a quick sample,未优化但可以完成工作。如前所述,没有 jQuery 也没有 AJAX。这个在符合标准的浏览器中工作,你需要为 IE 调整它,因为我没有 IE 可以测试。

<label>Province</label>
<select id="province"> 
    <option value="p1">p1</option>
    <option value="p2">p2</option>
    <option value="p3">p3</option>
</select> 

<label>city</label>
    <select id="city"> 
</select> ​


window.onload = (function() {

    var locations = {
        'p1': [
            'p1c1',
            'p1c2',
            'p1c3',
            ],
        'p2': [
            'p2c1',
            'p2c2',
            'p2c3',
            ],
        'p3': [
            'p3c1',
            'p3c2',
            'p3c3',
            ],
    };

    var provinces = document.getElementById('province');
    var cities = document.getElementById('city');

    provinces.addEventListener('change', function() {
        loadCities(this.value)
    }, false)


    var loadCities = (function loadCitiesFunc(key) {
        key = key || 'p1';
        var docFragment = document.createElement('select');
        for (var i = 0; i < locations[key].length; i++) {
            docFragment.appendChild(new Option(locations[key][i], locations[key][i]));
        }
        cities.innerHTML = docFragment.innerHTML;

        return loadCitiesFunc;
    }())

}());​

【讨论】:

  • 它在 FF 和 Chrome 中运行良好,但在 IE 中不行,甚至在 IE9 中也不行。而且我没有收到来自 IE 的 F12 开发插件的任何错误报告。有什么想法吗?
猜你喜欢
  • 2013-06-09
  • 1970-01-01
  • 1970-01-01
  • 2013-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-30
相关资源
最近更新 更多