<select name="a">
  <option value="1">111</option>
  <option value="2">222</option>
  <option value="3">333</option>
</select>提交后用request.getParameter("a")只能得到value的值,而得不到前台显示出来的值"111","222","333"。假如没有value项,如下:<select name="a">
  <option>111</option>
  <option>222</option>
  <option>333</option>
</select>用request.getParameter("a")就能得到。问题是怎样才能两个值都得到呢?

解决方案 »

  1.   

    下拉框的值必须用value属性设置的,而<option>111</option>中间的111只是显示在前台界面的,与下拉框的值没有根本上的关系,你的意思就是想得到和前台页面显示的值相同的值,那你就可以把value属性的值设置的和前台显示的值一样,象这样:<option value="111">111</option>
      

  2.   

    我试过,如果没有value值的话,用request.getParameter就可以得到前台显示的值。问题是我的程序要求这两个都有,并且都要能获得。该怎么办?
      

  3.   

    自己写<input type="hidden">
      

  4.   

    当option里面 不含value值得话 被显示出来的值就被默认为value的值 所以能被得到

     回复人:shine333(enihs) ( 两星(中级)) 信誉:115  2005-11-18 23:27:00  得分:0

    自己写<input type="hidden">的方法是说用隐藏属性储存下你想要的值但不显示出来 这样就可以取到想要的值了
      

  5.   

    把option的value设置成之间内容一样的值就行了
    <option value="111">111</option>
      

  6.   

    再说一遍,我的程序要求它们的值不一样!
    <input type="hidden">方法我试过了,可行。谢谢帮助!不过<input type="hidden">是间接的方法,有没有直接的方法来取?
      

  7.   

    不可能,<option value="">text</option>text只在客户端可见,根本不会被提交到服务器端,所以根本不可能从request里面getParameter出来。但是问题的症结不在这里,除非你这个是静态的,否则,一定是通过服务器端生成的,为何还要绕个圈子问客户端要?
      

  8.   

    上面讲的可能有点“误导”,我上面讲什么“绕圈子”主要是针对不写hidden,而纯粹对着<select>动脑筋的方法。我个人认为最简单的方法还是写hidden
      

  9.   

    如果是<option value="">text</option>,当然request.getParameter取不出text来。但是如果是这样:<option>text</option>,用request.getParameter就可以取text出来。不信你可以试一试。
        我的程序是这样的:从数据库中取出一组值,先存到一个数组中,再动态生成一个列表,从数据库中取出的值在客户端显示,而value中存放的是该值在数组中的序号。此序号在之后的程序中还要用得到,所以不能把它赋成和前端显示一样的值,但提交之后我需要的又是显示的值。因此才会有两个值怎样都能取的问题。
      

  10.   

    你的这个有点复杂简单的方法是再做个<select></select>
    type="hidden"
    希望有启发
      

  11.   

    用<input type="hidden">方法可以解决。我已经试过了。具体方法是这样的:在js里定义一个数组,将动态生成的序号和显示的值存进这个数组,前台选择时触发一个onchange事件,再在js里将对应的值赋给<input type="hidden">的value就可以了。不知道我说清楚了没有。