<select name="city" id="city" onChange="slt()">//调用这个方法
 <option value="Aberdeen">Aberdeen</option>
 <option value="Dundee">Dundee</option>
 <option value="Edinburgh">Edinburgh</option>
 <option value="Glasgow">Glasgow</option>
 <option value="Belfast">Belfast</option>
 <option value="">其他(请输入)</option>
</select>
<input name='city' id='othercity' type='text' style="display:none;" /><script type="text/javascript">$=document.getElementById;//var slt=$("city");你要获取某个对象最好是在方法本身里面获取
//slt.onchange = function(){ //onchange是事件还是方法??这样子写应该会存在问题
slt= function(){ //改成这样,然后在<select>标签里面调用这个方法
 var slt=$("city");
  // if(this.value==''){this指代的对象不明 改为slt吧
     if(slt.value==''){      $('othercity').style.display="";
   }
   else{
      $('othercity').style.display="none";
      $('othercity').value="";
   }
}
</script>

解决方案 »

  1.   

    如果两个提交的字段的name一样,在后台要这样读取提交的数据:
    String[] cities = request.getParameterValues("city");
    即使你隐藏了该控件,页面还是会把该值提交给后台处理的,如果是把控件设为disabled才不会提交
      

  2.   

    谢谢2楼,不过,经过测试,后台数据库没有收到值,另一个时间也是类似,使用4楼的disabled解决了提交问题,但不适用于city这个,仍然求教~~
      

  3.   

    干嘛那么麻烦,取个不同的名字不就完事了?
    同名表单项的处理,浏览器有差异,WEB服务器也有差异,所以还是别乱搞,除非你都测过。
      

  4.   


    选择或者输入的控件名都不叫city,然后提交的时候,判断一下,把值取到一个叫city的隐藏控件里你提交到后台,接收的是一个属性吧.这个属性不一定非得是数据库字段名吧