struts2标签s:select 只读解决方案

来源:互联网 发布:c语言交换值流程图 编辑:程序博客网 时间:2024/06/05 06:15

      使用struts2的<s:select>标签不具有disabled属性,除非将theme设置为simple才可以使用disabled,那么如果不使用simple的theme还有其他办法使select下拉框只读吗?从网上找到了一个办法,大致的思路就是

不让下拉框获得焦点,见下面的html代码:

 

 <span onmousemove="this.setCapture();" onmouseout="this.releaseCapture();" onfocus="this.blur();">
  
    <s:select key="DmsDocument.docZtSpec"   name="editEntity.docZtSpec"  list="#request['map'].docZtSpec" listKey="code" listValue="name" emptyOption="true"   />
    </span>

 

上面的<span>标签控制了不让select下拉框获得焦点,试验了一下还真管用,那么<s:radio>大概也可以用这种方式控制只读吧,也许是可以的.


       以上解决方案,见于各大搜索引擎结果,该解决方案并不完美!

      用鼠标点击该select控件,确实无法选中也就无法改变,但若用键盘呢,当光标移到select控件上,击向下箭头键,其可选项就可以改变了!

       怎么办?

        针对带输入控件的界面,我们一般会以回车键代替TAB键,

//回车代替Tab键
function transTabKey(){
    if (window.event.keyCode == 13 && event.srcElement.type!='textarea' )//&& event.srcElement.type!='button' && event.srcElement.type!='submit' && event.srcElement.type!='reset' && event.srcElement.type!=''
        window.event.keyCode = 9;
}

      于是就有<body onkeydown="transTabKey();">

      同样我们可乘此东风把<s:select>键盘事件加以屏蔽,也就是在其onkeydown事件把其他键转为回车,由于回车后可顺利进入下一个控件,从而实现用键盘选取亦不可能。

     参见:

    <span onmousemove="this.setCapture();" onmouseout="this.releaseCapture();" onfocus="this.blur();">

                     <s:select key="DmsDocument.docZtSpec"   name="editEntity.docZtSpec"  list="#request['map'].docZtSpec" listKey="code" listValue="name" emptyOption="true"  onkeydown="javascript:if (window.event.keyCode != 13) window.event.keyCode = 13;" >
                      </s:select>   

     </span>


 

 

原创粉丝点击