提供一个算法?give 100分 编写市下拉框的onchange()事件,滤掉符合的规则的市、县下拉框的option 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以在数据库中建立一个表 字段名是城市编码和城市名称 然后在下拉框里扫描那张表 再编写onchang()事件 从jsp中读取数据库中所有的省市县的代码,存到数组中,例如a[1]='11',b[1]='1101',c[1]='110101',把jsp中定义的数组中的数据对应赋到javascript中定义的数组中,然后写javascript函数,在下拉框的onchange事件中触发相应的onchange函数,即可 其实这个挺简单的:例如有三个下拉框,第二个及第三个可以根据第一个框动态的生成。方法是通过Microsoft的XMLHTTP:(可以动态的生成如下的select框)<div id="Prov"><select name="Province" onChange="javascript:Prov(this, document.all.item['City'], document.all.item['County'])"> <option value="11">广东省</option> .......</select></div>...<div id="City"><select name="CityA"><option value="1100">广州市</option><option value="1101">深圳市</option>....</select></div>...<div id="County"><select name="CountyA"><option value="112311">平安县</option>....</select></div>... function Prov(rObjA, rObjB, rObjC) { var lRtn = ""; var lXmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); var lUrl = "/yourservlet(or your Jsp page which used to get the datas from DB by parameters)?prov="+rObjA.value; //alert("lUrl = "+lUrl); /* 关键是你的选数据的方法,在你的servlet里选数据时的sql语句可以根据url带过来的参数 用between关键词分别可以选出对应市和县,然后按一定的格式输出,例如: <root> <error>no</error> <city>aaa</city> <county>bbb</county> <county>ccc</county> ... </root> 你也可以给元素加上属性,以便让他们对应,例如: <city id="1100">广州市</city> <county id="110001">东山区</county> <county id="110002">天河区</county> ...... 这样你动态生成下拉框时只要做一些判别就可以一一对应了。 下面的例子我没有做判别。 */ lXmlHttp.open("GET", lUrl, false); lXmlHttp.send(); try { lRtn = lXmlHttp.responseText;// } catch(exception) { if(exception.description=='系统错误: -1072896748。') lRtn = ""; } //alert("lRtn = "+lRtn); if(lRtn == null && lRtn=="") return false; var lXmlDoc = setXmlObj(lRtn); var lErrorElem = lXmlDoc.getElementsByTagName("error"); for(var i=0; i<lErrorElem.length; i++) { if(lErrorElem[i].text != "no") { alert(lErrorElem[i].text); return false; } } var lCityElem = lXmlDoc.getElementsByTagName("city"); var lCityStr = ""; var lCityArr = new Array(lCityElem.length); for(var i=0; i<lCityElem.length; i++) { if(!(lCityElem.hasChildNodes)) { //alert(""+lCityElem[i].nodeName); //alert(""+lCityElem[i].text); if(lCityElem[i].text != null) { //lCityStr += lCityElem[i].text+","; lCityArr[i] = lCityElem[i].text; lCityStr += "<option value='"+lCityElem[i].getAttribute("id")+"'>"+lCityElem[i].text+"</option>"; } } } alert("lCityStr="+lCityStr); rObjB.innerHTML = "<select name=\"CityA\">"+lCityStr+"</select>"; var lCountyStr = ""; var lCountyElem = lXmlDoc.getElementsByTagName("county"); var lCountArray = new Array(lCountyElem.length); for(var i=0; i<lCountyElem.length; i++) { lCountyArray[i] = lCountyElem[i].text; lCountyStr += "<option value='"+lCountyElem[i].getAttribute("id")+"'>"+llCountyElem[i].text+"</option>"; } alert("lCountyStr="+lCountyStr); rObjC.innerHTML = "<select name=\"CountyA\">"+lCountyStr+"</select>"; return true; } function setXmlObj(sXml){ var xmlDoc= new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async = false; //alert(sXml); xmlDoc.loadXML(sXml); return xmlDoc; } 附:这段代码我没有测试过,不过大概的过程应该没什么大的问题,关键是他从数据库选数据的sql语句。 建议两个<select>就行了,一个省也就60-70个县,可以放到一个select中的! struts2 if 标签问题 使用hibernateDAO 事务问题 简单 关于在jsp中使用fckeditor? 强烈求助 javabean能完全代替applet的功能吗?? 如何在点击按钮后在当前页弹出提示框? 关于IO流的一些问题,肯定送分 各位高手帮帮忙,我快要疯了,救救我吧!(Applet 与 Servlet 通讯) 谁参加过weblogic的证书考试,是否有经验可供参考?高分高分高高分 关于servlet上传文件中,所建立的目的文件夹与实际上传到的文件夹不是同一位置。 怎样关闭APPLET窗口 急!!!请教各位大侠jsp中的"/"路径标识符的问题
方法是通过Microsoft的XMLHTTP:(可以动态的生成如下的select框)
<div id="Prov">
<select name="Province" onChange="javascript:Prov(this, document.all.item['City'], document.all.item['County'])">
<option value="11">广东省</option>
.......
</select>
</div>
...
<div id="City">
<select name="CityA">
<option value="1100">广州市</option>
<option value="1101">深圳市</option>
....
</select>
</div>
...
<div id="County">
<select name="CountyA">
<option value="112311">平安县</option>
....
</select>
</div>
...
function Prov(rObjA, rObjB, rObjC)
{
var lRtn = "";
var lXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
var lUrl = "/yourservlet(or your Jsp page which used to get the datas from DB by parameters)?prov="+rObjA.value;
//alert("lUrl = "+lUrl);
/*
关键是你的选数据的方法,在你的servlet里选数据时的sql语句可以根据url带过来的参数
用between关键词分别可以选出对应市和县,然后按一定的格式输出,例如:
<root>
<error>no</error>
<city>aaa</city>
<county>bbb</county>
<county>ccc</county>
...
</root> 你也可以给元素加上属性,以便让他们对应,例如:
<city id="1100">广州市</city>
<county id="110001">东山区</county>
<county id="110002">天河区</county>
......
这样你动态生成下拉框时只要做一些判别就可以一一对应了。
下面的例子我没有做判别。
*/ lXmlHttp.open("GET", lUrl, false);
lXmlHttp.send();
try
{
lRtn = lXmlHttp.responseText;//
}
catch(exception)
{
if(exception.description=='系统错误: -1072896748。')
lRtn = "";
}
//alert("lRtn = "+lRtn);
if(lRtn == null && lRtn=="") return false;
var lXmlDoc = setXmlObj(lRtn);
var lErrorElem = lXmlDoc.getElementsByTagName("error");
for(var i=0; i<lErrorElem.length; i++)
{
if(lErrorElem[i].text != "no")
{
alert(lErrorElem[i].text);
return false;
}
}
var lCityElem = lXmlDoc.getElementsByTagName("city");
var lCityStr = "";
var lCityArr = new Array(lCityElem.length);
for(var i=0; i<lCityElem.length; i++)
{
if(!(lCityElem.hasChildNodes))
{
//alert(""+lCityElem[i].nodeName);
//alert(""+lCityElem[i].text);
if(lCityElem[i].text != null)
{
//lCityStr += lCityElem[i].text+",";
lCityArr[i] = lCityElem[i].text;
lCityStr += "<option value='"+lCityElem[i].getAttribute("id")+"'>"+lCityElem[i].text+"</option>";
}
}
}
alert("lCityStr="+lCityStr);
rObjB.innerHTML = "<select name=\"CityA\">"+lCityStr+"</select>"; var lCountyStr = "";
var lCountyElem = lXmlDoc.getElementsByTagName("county");
var lCountArray = new Array(lCountyElem.length);
for(var i=0; i<lCountyElem.length; i++)
{
lCountyArray[i] = lCountyElem[i].text;
lCountyStr += "<option value='"+lCountyElem[i].getAttribute("id")+"'>"+llCountyElem[i].text+"</option>";
}
alert("lCountyStr="+lCountyStr);
rObjC.innerHTML = "<select name=\"CountyA\">"+lCountyStr+"</select>"; return true;
} function setXmlObj(sXml){
var xmlDoc= new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
//alert(sXml);
xmlDoc.loadXML(sXml);
return xmlDoc;
}
这段代码我没有测试过,不过大概的过程应该没什么大的问题,关键是他从数据库选数据的sql语句。