问: 就是带有Multiple属性的Select对象,要实现多选功能,如何获取提交该对象的值保存到别处,以及如何根据从别处获取的值设置该Select的选择项?
______________________________________________________________________________________________ 答1: 不太明白你指的别处是什么意思. 我就这么理解了:
<FORM METHOD=POST ACTION="" name="form1"> <SELECT NAME="ss" multiple> <option>aaa</option> <option>bbb</option> <option>ccc</option> <option>ddd</option> <option>eee</option> <option>fff</option> </SELECT> </FORM> <INPUT TYPE="button" value="click" onclick="show()" id="slum"> <SCRIPT LANGUAGE="JavaScript"> <!-- function show() { var str="" var len=document.form1.ss.options.length for(var i=0;i<len;i++) { if(document.form1.ss.options[i].selected==true) { str=str+document.form1.ss.options[i].text + "," } }
alert(str) } //--> </SCRIPT>
当然还可以保存在数组里. ______________________________________________________________________________________________ 答2: <FORM METHOD=POST ACTION="" name="form1"> <SELECT NAME="ss" multiple> <option>aaa</option> <option>bbb</option> <option>ccc</option> <option>ddd</option> <option>eee</option> <option>fff</option> </SELECT> <INPUT TYPE="text" NAME="text1" value="slum"> </FORM> <INPUT TYPE="button" value="click" onclick="show()" id="slum"> <SCRIPT LANGUAGE="JavaScript"> <!-- function show() { if(document.form1.ss.selectedIndex!=-1) { var str=document.form1.text1.value document.form1.ss.options[document.form1.ss.selectedIndex].text=str } else { alert("please select one item") } } //--> </SCRIPT> ______________________________________________________________________________________________ 答3: 我指的别处是指通过表单提交被另外一个页面获取,并作为一个字段保存到数据库中去。 多选的时候,document.form1.ss.options[document.form1.ss.selectedIndex]获得的只是列表被选中的第一项。 如果我在当前页面submit后,在submit转向的另外一个页面中如何取得这个表单项的多选列表中的值?然后再转回这个页面,如果根据给定的这个值置列表中的某些选项为selected? 至于数组,我总不至于将一个不定长数组作为一个字段存往数据库吧。 ______________________________________________________________________________________________ 答4: 后台的我不懂, 不过w3c的html4.0 ref 中说了: 当select是多选时, 表单提交后应该是选中的都提交.后台接收会不会是一个数据集合? 你可以将字符串付给hidden么. 不过有点麻烦了. ______________________________________________________________________________________________ 答5: 交给后台,我也是这么想的, 下面是我的一个例子,就是页面刷新是我不知道怎么保存页面再显示刚才修改的值(也就是说如何在页面开头获取刚才表单的那个值),全清空了 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>无标题文档</title> </head> <script language="javascript"> function doSubmit1() { var val = document.form1.textno.value; var no = parseInt(val); if(no>=16 || no<=0) { alert("输入的数字范围错误!"); return; } else document.form1.tno.value = val; }
function doSubmit2() { var no = 0; for(i=0;i<document.form1.mselect;i++) { if(document.form1.mselect.options[i].selected==true) no += pow(2,index) } document.form1.tno.value = val; }
function initList() { var val = document.form1.tno.value; var no = parseInt(val); while(no>0) { var index = Math.floor(Math.log(no)/Math.log(2)); document.form1.mselect.options[index].selected=true; no -= Math.pow(2,index); } } </script> <body> <form name="form1" method="post" action=""> <div align="center"> <p> <input type="hidden" name="tno"> <input name="textno" type="text" id="textno"> <input type="submit" name="Submit" value="提交" onClick="doSubmit1();"> </p> <p> <select name="mselect" size="20" multiple> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> </select> </p> <input type="submit" name="Submit" value="提交" onClick="doSubmit2();"> </div> </form> <script language="javascript"> initList(); </script> </body> </html>
______________________________________________________________________________________________ 答6: 你的写法好像有点问题, 你这么写,不管数字是否超出范围都会提交. 你的意思是不是当页面提交后,文本框的输入值不变, 以便可以继续修改?如果是这样,有几个方法你试试吧, 都是别人以前用过的: 1. <form target="_blank"> 2. <input value="<%=Request.form("a")%>" name="a"> 3. 每个输入框后对应一个<input type="hidden"> 存储该值 然后回写
(编辑:网站学习网)
|