您的位置:首页 > 编程语言 > Java开发

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

2010-07-12 15:48 399 查看
      使用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>

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息