随笔-2  评论-0  文章-17  trackbacks-0
    在用strust2做项目时遇到一个问题,我用struts2中datetimepicker 标签时只想让用户用后面的选择按钮来选择日期,
而不想让用户输入,因为用户的输入很可能不符合日期格式的要求。
    于是我就在<s: datetimepicker >标签中加入了disabled=“true",但是我发现这个设置根本不起作用。
    我开始到网上去找这方面的资料,我发现遇到这个问题的人还真不少,但是都没有找到好的解决方案。
于是我开始自己琢磨这这个问题,经过很多次的实验我发现,<s: datetimepicker >控件其实是一个DIV,
他的innerHTML是的具体内容如下: 
代码内容

    第一个子元素是一个隐藏域的表单,
    第二个就是我们看见的文本输入框.
    日期控件的如下:
<s:datetimepicker name="starttime" id="starttime" displayFormat="yyyy-MM-dd"></s:datetimepicker>
    我们想要做的就是让第二个子元素的disabled="true",所以我们可以这么做:
然后写javascript,代码如下:
document.getElementById("starttime").childNodes(1).disabled="true";
其中childNodes(1)代表是第二个子元素,也就是我们不想让用户输入的文本框。
目的达到。
但是这又遇到了另外一个问题设置成disabled的时候,Action中获取不到页面中相应的值.
用如下方式:
document.getElementById("startTimeId").childNodes(1).setAttribute("readOnly","true");
或document.getElementById("starttime").childNodes(1).readOnly="true"; //注意readOnly中o大写
就能获取值了.

我又尝试隐藏选择按钮图片:
document.getElementById("startTimeId").childNodes(2)获取第三个元素的时候发现是空格(狂晕).
document.getElementById("startTimeId").childNodes(3)才是那个图片!
document.getElementById("startTimeId").childNodes(3).style.display  =  "none";        //删掉图片原来所占的位置
document.getElementById("startTimeId").childNodes(3).style.visibility  =  "hidden";    //保留图片位置.
一切ok!
posted on 2010-03-10 14:06 lameer 阅读(3034) 评论(0)  编辑  收藏 所属分类: struts2学习

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问