首先分析下disable ,display和readonly:
1,Readonly只针对input(text / password)和textarea有效,而disabled对于所有的表单元素都有效,包括select, radio, checkbox, button等。
2,表单元素在使用了disabled后,当我们将表单以POST或GET的方式提交的话,这个元素的值不会被传递出去。
3,.style="display:none" 用了隐藏页面标签。
项目中要求用户不能二次更改所有select选项。通过查资料发现最好的做法是,把所有select置为disable,然后在用户提交的时候,再把disable置为false。可惜项目是老项目代码太渣,在原有代码上更改增加判断可能会很麻烦,最后选择仅仅新增一个JS来实现效果,上代码:
function streetLimits(){ var inputs=document.getElementsByTagName('input'); var selects=document.getElementsByTagName('select'); for(var i=0;i<selects.length;i++){ if(selects[i].name!='sexId'){ var index; selects[i].onclick=function(){ index=this.selectedIndex; }; selects[i].onchange=function(){ this.selectedIndex=index; }; } } }