一种在Select1的OnChange事件中重新提交[window.location='selfurl?Category='+this.value].根据参数选Select2.一种一次提取存放到<input type=text id=SelectArray value="<%=值[由分割符分开]%>">
在Select1的OnChange事件中利用JavaScript的String.spli('分割符')返回的数组填充Select2
在Select1的OnChange事件中利用JavaScript的String.spli('分割符')返回的数组填充Select2
解决方案 »
- 上传视频的截图问题
- servlet-数据库-dao实现类之间的对象传递问题,在线等。谢谢指教
- 需要用JavaScript实现自动保存文件功能的代码!!!请各位帮帮忙了。。。
- Buffer full exx
- 大文件想存成sqlserver数据库中的ntext或image,如何实现。谢谢
- Maven项目使用tomcat部署 怎么调试Maven项目?? 可以使用m2clipse插件什么的debug吗?
- spring mvc和 jasperreport分页问题
- 如何生成servle文件呀!
- 我的天啊!谁能帮帮我!几天都没解决了!好苦恼啊!关于tomcat目录的问题![在线]
- 一个数据集的问题,up ……
- 关于jsp:include 传递参数编码的问题
- 请问有关JSP中include的问题!~
再根据提交的内容查询第二个select所要的值,同时,将第一个选择的值放在第二个form的hidden中一起提交第二个form
这也是个jsp与js结合的例子。
我现在做的有关菜单的关联的问题就是采用的这种方法,而且我在有些地方
看到,如果你频繁的查询数据库的话会导致速度很慢的问题,所以你的菜单可以
通过js来实现,我现在都做到了四级菜单关联,不过就是数据比较统一,不是在数据库
中读出的,但是我觉得一样,如果把数组中的值用数据库的值来代替的话就可以了!
你可以看看这个,(你可以把js中的数组数据换成你在数据库中得到的数据)。<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>menu</title>
<SCRIPT language=JavaScript>
//´Ë¶Î¿ÉÓÃÆäËûÄÚÈÝÌæ´ú£¬ÔÝʱÓÃÒ»¸ö9X9³Ë·¨±íµÄ¶þάÊý×éÀ´Ìî³ä var dataArray = new Array(9); // ²úÉú³Ë·¨±íµÄÍâ¿Ç?
for (var j = 0; j < dataArray.length; j++)// ×¼±¸ÓÃÐнøÐÐÌî³ä¡£
{
var aRow = new Array(9); // ´´½¨Ò»ÐС£
for (var i = 0; i < aRow.length; i++)// ×¼±¸Ìî³äÕâÒ»ÐС£
{
aRow[i] = (i + " times " + j + " = " + i*j); // ¼ÆËã²¢´æ´¢Öµ¡£
}
dataArray[j] = aRow; // ½«ÒÑÌî³äµÄÐзÅÈë±íÖС£ }
var xbound=9;
var ybound=9;
function fill(SelectCtrl, itemArray) //Ìî³äÏÂÀ­µ¥
{
var i;
for (i = SelectCtrl.options.length; i >= 0; i--) { //Çå¿ÕÑ¡Ïî
SelectCtrl.options[i] = null; }
if (itemArray != null)
{
for (i = 0; i < itemArray.length; i++)
{
SelectCtrl.options[i] = new Option(itemArray[i]); //´´½¨Ñ¡Ïî¶ÔÏó
if (itemArray[i] != null)
SelectCtrl.options[i].value = itemArray[i]; // ¸øÑ¡Ïֵ
}
}
SelectCtrl.options[0].selected = true; //ÈõÚÒ»¸öÑ¡Ïî³ÉΪĬÈÏÑ¡Ïî
}
function fillMain(SelectCtrl) // Ìî³äÖ÷ÏÂÀ­µ¥
{var i;
mainArray= new Array(ybound);
mainArray[0]="Please select!" //´´½¨Ò»¸öһάÊý×飬ÓÃÒÔ×°¶þάÊý×é for (i=0;i < ybound;i++) //µÄÊ×ÁÐÖµ
mainArray[i+1]=dataArray[i][0];
fill(SelectCtrl, mainArray);
} function fillSub(SelectCtrl,index) //Ìî³ä×ÓÏÂÀ­µ¥
{var i;
if (index<0) //µ±index<0ʱ´´½¨Ò»¸ö
{ subArray= new Array(2);
subArray[0]="<--------->"; //Ö»º¬Óжþ¸öÔªËصÄÊý×é
subArray[1]="";
}
else
{
subArray= new Array(xbound-1);
for(i=0;i < xbound-1;i++)
subArray[i]=dataArray[index][i+1]; //ÓöþάÊý×éµÄÆäËûÁÐÔªËØ
} //Ìî³äд´½¨µÄһάÊý×é
fill(SelectCtrl,subArray);
}
</script>
</head>
<!------µ±×°ÔØ´ËÒ³Ãæʱ£¬µ÷ÓÃfillMainº¯Êý----------->
<body onLoad="fillMain(document.form1.MainMenu );">
<FORM name=form1 >
<!---------µ±Ö÷ÏÂÀ­µ¥Ñ¡Ïî¸Ä±äʱ£¬µ÷ÓÃfillSubº¯Êý-------->
<DIV align=center><SELECT size=1
onchange="fillSub(this.form.SubMenu, this.selectedIndex-1);"
name=MainMenu> <option></option><option></option>
</SELECT> <SELECT
size=1 name=SubMenu> <option><--------------></option><option></option></SELECT>
</DIV></FORM> </body>
</html>你可以试试改写在javascript中一些地方使它满足你的要求!
<html>
<head>
<title>menu</title>
<SCRIPT language=JavaScript>
//此段可用其他内容替代,暂时用一个9X9乘法表的二维数组来填充 var dataArray = new Array(9); // 产生乘法表的外壳?
for (var j = 0; j < dataArray.length; j++)// 准备用行进行填充。
{
var aRow = new Array(9); // 创建一行。
for (var i = 0; i < aRow.length; i++)// 准备填充这一行。
{
aRow[i] = (i + " times " + j + " = " + i*j); // 计算并存储值。
}
dataArray[j] = aRow; // 将已填充的行放入表中。 }
var xbound=9;
var ybound=9;
function fill(SelectCtrl, itemArray) //填充下拉单
{
var i;
for (i = SelectCtrl.options.length; i >= 0; i--) { //清空选项
SelectCtrl.options[i] = null; }
if (itemArray != null)
{
for (i = 0; i < itemArray.length; i++)
{
SelectCtrl.options[i] = new Option(itemArray[i]); //创建选项对象
if (itemArray[i] != null)
SelectCtrl.options[i].value = itemArray[i]; // 给选项赋值
}
}
SelectCtrl.options[0].selected = true; //让第一个选项成为默认选项
}
function fillMain(SelectCtrl) // 填充主下拉单
{var i;
mainArray= new Array(ybound);
mainArray[0]="Please select!" //创建一个一维数组,用以装二维数组 for (i=0;i < ybound;i++) //的首列值
mainArray[i+1]=dataArray[i][0];
fill(SelectCtrl, mainArray);
} function fillSub(SelectCtrl,index) //填充子下拉单
{var i;
if (index<0) //当index<0时创建一个
{ subArray= new Array(2);
subArray[0]="<--------->"; //只含有二个元素的数组
subArray[1]="";
}
else
{
subArray= new Array(xbound-1);
for(i=0;i < xbound-1;i++)
subArray[i]=dataArray[index][i+1]; //用二维数组的其他列元素
} //填充新创建的一维数组
fill(SelectCtrl,subArray);
}
</script>
</head>
<!------当装载此页面时,调用fillMain函数----------->
<body onLoad="fillMain(document.form1.MainMenu );">
<FORM name=form1 >
<!---------当主下拉单选项改变时,调用fillSub函数-------->
<DIV align=center><SELECT size=1
onchange="fillSub(this.form.SubMenu, this.selectedIndex-1);"
name=MainMenu> <option></option><option></option>
</SELECT> <SELECT
size=1 name=SubMenu> <option><--------------></option><option></option></SELECT>
</DIV></FORM> </body>
</html>