这个问题已经困扰我一天了,因为要动态的设置select的可用属性,所以想到用disabled这个属性来控制,但是发现用了disabled之后,在后台的Form获得不到前台的值,所以不能用disabled来实现。
在网上找了很多的实现方法,其中说的最多的就是
        function setReadOnly(obj){      obj.onmouseover = function(){   
            obj.setCapture();   
        }   
        obj.onmouseout = function(){   
            obj.releaseCapture();   
        }   
        obj.onfocus = function(){   
            obj.blur();   
        }   
        obj.onbeforeactivate = function(){   
            return false;   
        }    
}
这个函数,但是我用了之后,发现我的select下拉框还是可用,这到底是为什么啊?
难道是因为IE8不支持的问题?跪等高人来救命啊~~!

解决方案 »

  1.   

    对啊,用disabled是获取不到数据的啊,那你是想让它在不能用的时候也给你返回一个数据吗,如果是这样的话,那你就可以给它设置一个默认值啊,就是在不能用的时候就在后台默认给它一个值
      

  2.   

    你可以考虑采用readonly,但用这个,给客户的效果不好,如果用disabled那么可以用hidden把需要的值传到后台
      

  3.   

    楼主要想不显示的话,也可以用style='display:none'。这样值是可以取到。但是不会显示出来给客户的。
    如果是个输入框的话。也可以用hidden来隐藏值。
      

  4.   

    用隐藏域做。
    当没有禁用select的时候,先将它的值赋值给hidden,然后再将它disabled
      

  5.   

    用隐藏控件的这个方法我也想过,但是因为画面上的下拉框比较多,所以要再formbean中加很多的属性。
    并在画面上有三个radiobutton,分别代表了三种状态。选择其中一种时,画面上的有些控件就被设置成不可用的。
    还有就是select控件是不支持readonly这个属性的。
    这次要实现的效果就是 不使用disabled这个属性 而实现select的disabled功能。
    在网上找到方法都是我在1L写的那个函数。但是为什么我加上就不行呢?
      

  6.   

    楼主如果想让select不可用,可以试下这种方法:当select被选中的时候,直接让其失去焦点。
    <select onfocus="this.blur();">
      

  7.   

    这个问题已经解决了,就是在select控件的外边加一个span就好了,还是用刚开始的那个函数。谢谢大家帮我解决问题。