javascript将下拉框disable之后,form提交时下拉框的值将不再传回后台。
将项目中遇到的实际情况是:整个form都是在后台动态拼接后传回页面进行显示的。所以在网上查找资料时提到的两种常规实现方式都显得不太合适:
第一、在select标签外面包一层标签(这种做法实现的效果感觉有点点不和谐):
onmouseout = "firstChild.disabled=false" >
111
222
333
444
第二、添加一个hidden的input框,下拉框还是disable掉,把需要提交到后台的值放到添加的隐藏域中。
第二种方式如果直接弄的话不太好弄,不过稍微变换一下思路,这种方式是可以很好的满足需求的:通过js实现隐藏域的添加。代码摘录如下:
document.getElementsByName("tranArea")[0].disabled="disabled";
var inp = document.crea teElement("
TYPE='hidden'
NAME='tranArea'
VALUE="+document.getElementsByName("tranArea")[0].value+"
>");
document.frm.a(inp);
另外,一兄弟在告诉我玩crea teElement的时候遇到了一点小小的问题也一并记录:
var inp = document.crea teElement("INPUT");
// inp.setAttribute("name","tranArea",0); // name的设置不成功
inp.setAttribute("type","hidden",0);
inp.setAttribute("value","xxx",0);
document.docForm.a(inp);
alert(document.docForm.outerHTML);
最后,友情提示一下:select标签没有readonly属性,所以写了也白写。