读书人

请问一个棘手的javascript和select有关

发布时间: 2012-05-05 17:21:10 作者: rapoo

请教一个棘手的javascript和select问题!
大家好,现在需要做一个自动操作的程序。
网页这边不是我们这边写的,也没有要求对方修改的资格。
现在遇到一个问题,把问题抽出来就是:
页面上有3个select,第一个是选择“省份”,第二个是选择“市”,第三个是“县”。
网页刚开始的时候,“省份”下面是有选项的,也就是各个省的名字。
但是“市”和“县”下面都没有选项。
当你选好一个“省份”后,下面的“市”的选项会出来,
同理,当你选好一个“市”后,下面的“县”的选项会出来。

现在程序调用js可以自动把省份设置成“浙江省”,
但是下面对“市”和“县”的设置都不起作用。

不知道该如何解决呢。请各位赐教,谢谢!

[解决办法]
不要直接把值设到select,而是触发onchange事件
[解决办法]
现在程序调用js可以自动把省份设置成“浙江省”,?

那你的程序也可以自动设置下面的市、县的啊,照着设置省的方法做就可以了

看的代码怎么写的
[解决办法]
楼主搜下 下拉联动,就是你要的效果。
[解决办法]
http://blog.csdn.net/hch126163/article/details/6059906
[解决办法]
http://blog.csdn.net/tyhjx/article/details/7421964
[解决办法]
楼主需要的是ajax异步读取市县吧
[解决办法]
市和县的同样的做法,没有效果。

因为市和县开始是没有选项的。

你需要在设置完省之后,再设置市,设置省的时候不是有值了吗?
你仔细想想是不是这样?

让你贴代码也不贴,实现这种的方法有很多种,下面就告诉你一种,

HTML code
<html xmlns="http://www.w3.org/1999/xhtml"><head>    <title></title>    <script type="text/javascript">    //示例数据,数据的不同,获取数据的方法是不同的      var data = { "浙江省": { "湖州市": ["德清县","长兴县","安吉县","吴兴区","南浔区"], "杭州市": ["上城区", "下城区", "西湖区"] },                   "河南省": {"洛阳市":["孟津县","新安县","栾川县"],"新乡市":["新乡县","获嘉县","长垣县","封丘县"],"周口市":["鹿邑县","太康县","郸城县","淮阳县"]},                   "北京市": {"北京市":["昌平区","海淀区","怀柔县","延庆县"]}                      };    window.onload = function () {      //填充省数据      for (p in data) {        var sheng = document.getElementById("province");        sheng.options[sheng.options.length] = new Option(p, p);      }      setCity()    }    function setCity()    {      var sheng = document.getElementById("province");      var shi = document.getElementById("city");      shi.options.length = 0;      var selected_sheng = sheng.options[sheng.selectedIndex].value;      for (c in data[selected_sheng]) {                shi.options[shi.options.length] = new Option(c, c);      }      setCountry()    }    function setCountry() {      var sheng = document.getElementById("province");      var shi = document.getElementById("city");      var xian = document.getElementById("country");      var selected_sheng = sheng.options[sheng.selectedIndex].value;      var selected_shi = shi.options[shi.selectedIndex].value;      var xianArray = data[selected_sheng][selected_shi];      xian.options.length = 0;      for (i = 0; i < xianArray.length;i++ ) {        xian.options[xian.options.length] = new Option(xianArray[i], xianArray[i]);      }    }    </script></head><body>    <form>    选择省:<select id="province" onchange="setCity()"></select>    选择市:<select id="city" onchange="setCountry()"></select>    选择区县:<select id="country"></select>    </form></body></html>
[解决办法]
探讨


大家好,现在需要做一个自动操作的程序。
网页这边不是我们这边写的,也没有要求对方修改的资格。


[解决办法]
探讨

引用:
不要直接把值设到select,而是触发onchange事件


敢问大侠,如何触发这个onchange事件呢。能方便留下im联系方式吗或者私消息,谢谢啊。

[解决办法]
问题很明显,页面制作方是根本上级select的onchange方法来填充select内容的,而JS修改select的值是不会触发该select的onchange事件的,需要手动触发。可以把修改值和触发change事件封装成一个方法。
JScript code
function setSelectValue(sel, val){            sel.value = val;            fireEvent(sel, "change");        }        function setSelectIndex(sel, index){            sel.selectedIndex = index;            fireEvent(sel, "change");        }        function fireEvent(elem, type){            if(elem.fireEvent){                elem.fireEvent("on" + type);            }else{                var evt = document.createEvent("HTMLEvents");                evt.initEvent(type, false, true);                elem.dispatchEvent(evt);            }        } 

读书人网 >JavaScript

热点推荐