老牛拉磨
Share your knowledge with the world!
BlogJava
首页
新随笔
联系
聚合
管理
随笔-2 评论-0 文章-17 trackbacks-0
如何让Struts2中datetimepicker 标签的输入框不可输入
在用strust2做项目时遇到一个问题,我用struts2中datetimepicker 标签时只想让用户用后面的选择按钮来选择日期,
而不想让用户输入,因为用户的输入很可能不符合日期格式的要求。
于是我就在<s: datetimepicker >标签中加入了
disabled=“true",
但是我发现这个设置根本不起作用。
我开始到网上去找这方面的资料,我发现遇到这个问题的人还真不少,但是都没有找到好的解决方案。
于是我开始自己琢磨这这个问题,经过很多次的实验我发现,<s: datetimepicker >控件其实是一个DIV,
他的innerHTML是的具体内容如下:
代码内容
<
INPUT
type
=hidden
name
=""
dojoAttachPoint
="valueNode"
><
INPUT
style
="VERTICAL-ALIGN: middle; WIDTH: 7em"
name
=""
__doClobber__
="true"
dojoAttachPoint
="inputNode"
autocomplete
="off"
>
<
IMG
style
="VISIBILITY: hidden; VERTICAL-ALIGN: middle; CURSOR: hand"
alt
="Select a date"
src
="http://localhost:9998/wherp/struts/dojo/src/widget/templates/images/dateIcon.gif"
__doClobber__
="true"
dojoAttachPoint
="buttonNode"
dojoAttachEvent
="onclick: onIconClick"
>
<
DIV
class
=dojoPopupContainer
style
="DISPLAY: none; Z-INDEX: 10; POSITION: absolute"
dojoAttachPoint
="containerNode"
explodeClassName
="calendarBodyContainer"
>
<
DIV
class
=datePickerContainer
dojoAttachPoint
="datePickerContainerNode"
>
<
TABLE
class
=calendarContainer
cellSpacing
=0
cellPadding
=0
>
<
THEAD
>
<
TR
>
<
TD
class
=monthWrapper
vAlign
=top
>
<
TABLE
class
=monthContainer
cellSpacing
=0
cellPadding
=0
border
=0
>
<
TBODY
>
<
TR
>
<
TD
class
="monthCurve monthCurveTL"
vAlign
=top
></
TD
>
<
TD
class
=monthLabelContainer
vAlign
=top
><
SPAN
class
="incrementControl increase"
__doClobber__
="true"
dojoAttachPoint
="increaseWeekNode"
dojoAttachEvent
="onClick: onIncrementWeek;"
><
IMG
style
="WIDTH: 7px; HEIGHT: 5px"
alt
=↓
src
="http://localhost:9998/wherp/struts/dojo/src/widget/templates/images/incrementMonth.png"
>
</
SPAN
><
SPAN
class
="incrementControl increase"
__doClobber__
="true"
dojoAttachPoint
="increaseMonthNode"
dojoAttachEvent
="onClick: onIncrementMonth;"
><
IMG
alt
=↓
src
="http://localhost:9998/wherp/struts/dojo/src/widget/templates/images/incrementMonth.png"
dojoAttachPoint
="incrementMonthImageNode"
>
</
SPAN
><
SPAN
class
="incrementControl decrease"
__doClobber__
="true"
dojoAttachPoint
="decreaseWeekNode"
dojoAttachEvent
="onClick: onIncrementWeek;"
><
IMG
style
="WIDTH: 7px; HEIGHT: 5px"
alt
=↑
src
="http://localhost:9998/wherp/struts/dojo/src/widget/templates/images/decrementMonth.png"
>
</
SPAN
><
SPAN
class
="incrementControl decrease"
__doClobber__
="true"
dojoAttachPoint
="decreaseMonthNode"
dojoAttachEvent
="onClick: onIncrementMonth;"
><
IMG
alt
=↑
src
="http://localhost:9998/wherp/struts/dojo/src/widget/templates/images/decrementMonth.png"
dojoAttachPoint
="decrementMonthImageNode"
>
</
SPAN
><
SPAN
class
=month
dojoAttachPoint
="monthLabelNode"
>
四月
</
SPAN
></
TD
>
<
TD
class
="monthCurve monthCurveTR"
vAlign
=top
></
TD
></
TR
></
TBODY
></
TABLE
></
TD
></
TR
></
THEAD
>
<
TBODY
>
<
TR
>
<
TD
colSpan
=3
>
<
TABLE
class
=calendarBodyContainer
cellSpacing
=0
cellPadding
=0
border
=0
>
<
THEAD
>
<
TR
dojoAttachPoint
="dayLabelsRow"
>
<
TD
>
日
</
TD
>
<
TD
>
一
</
TD
>
<
TD
>
二
</
TD
>
<
TD
>
三
</
TD
>
<
TD
>
四
</
TD
>
<
TD
>
五
</
TD
>
<
TD
>
六
</
TD
></
TR
></
THEAD
>
<
TBODY
__doClobber__
="true"
dojoAttachPoint
="calendarDatesContainerNode"
dojoAttachEvent
="onClick: _handleUiClick;"
>
<
TR
dojoAttachPoint
="calendarWeekTemplate"
>
<
TD
class
=previousMonth
>
28
</
TD
>
<
TD
class
=previousMonth
>
29
</
TD
>
<
TD
class
=previousMonth
>
30
</
TD
>
<
TD
class
=previousMonth
>
31
</
TD
>
<
TD
class
=currentMonth
>
1
</
TD
>
<
TD
class
=currentMonth
>
2
</
TD
>
<
TD
class
=currentMonth
>
3
</
TD
></
TR
>
<
TR
dojoAttachPoint
="calendarWeekTemplate"
>
<
TD
class
=currentMonth
>
4
</
TD
>
<
TD
class
=currentMonth
>
5
</
TD
>
<
TD
class
=currentMonth
>
6
</
TD
>
<
TD
class
=currentMonth
>
7
</
TD
>
<
TD
class
=currentMonth
>
8
</
TD
>
<
TD
class
=currentMonth
>
9
</
TD
>
<
TD
class
=currentMonth
>
10
</
TD
></
TR
>
<
TR
dojoAttachPoint
="calendarWeekTemplate"
>
<
TD
class
=currentMonth
>
11
</
TD
>
<
TD
class
=currentMonth
>
12
</
TD
>
<
TD
class
=currentMonth
>
13
</
TD
>
<
TD
class
=currentMonth
>
14
</
TD
>
<
TD
class
=currentMonth
>
15
</
TD
>
<
TD
class
=currentMonth
>
16
</
TD
>
<
TD
class
=currentMonth
>
17
</
TD
></
TR
>
<
TR
dojoAttachPoint
="calendarWeekTemplate"
>
<
TD
class
=currentMonth
>
18
</
TD
>
<
TD
class
="currentMonth currentDate"
>
19
</
TD
>
<
TD
class
=currentMonth
>
20
</
TD
>
<
TD
class
=currentMonth
>
21
</
TD
>
<
TD
class
=currentMonth
>
22
</
TD
>
<
TD
class
=currentMonth
>
23
</
TD
>
<
TD
class
=currentMonth
>
24
</
TD
></
TR
>
<
TR
dojoAttachPoint
="calendarWeekTemplate"
>
<
TD
class
=currentMonth
>
25
</
TD
>
<
TD
class
=currentMonth
>
26
</
TD
>
<
TD
class
=currentMonth
>
27
</
TD
>
<
TD
class
=currentMonth
>
28
</
TD
>
<
TD
class
=currentMonth
>
29
</
TD
>
<
TD
class
=currentMonth
>
30
</
TD
>
<
TD
class
=nextMonth
>
1
</
TD
></
TR
>
<
TR
dojoAttachPoint
="calendarWeekTemplate"
>
<
TD
class
=nextMonth
>
2
</
TD
>
<
TD
class
=nextMonth
>
3
</
TD
>
<
TD
class
=nextMonth
>
4
</
TD
>
<
TD
class
=nextMonth
>
5
</
TD
>
<
TD
class
=nextMonth
>
6
</
TD
>
<
TD
class
=nextMonth
>
7
</
TD
>
<
TD
class
=nextMonth
>
8
</
TD
></
TR
></
TBODY
></
TABLE
></
TD
></
TR
></
TBODY
>
<
TFOOT
>
<
TR
>
<
TD
class
=yearWrapper
colSpan
=3
>
<
TABLE
class
=yearContainer
cellSpacing
=0
cellPadding
=0
border
=0
>
<
TBODY
>
<
TR
>
<
TD
class
=curveBL
vAlign
=top
></
TD
>
<
TD
vAlign
=top
>
<
H3
class
=yearLabel
><
SPAN
class
=previousYear
__doClobber__
="true"
dojoAttachPoint
="previousYearLabelNode"
dojoAttachEvent
="onClick: onIncrementYear;"
>
2009年
</
SPAN
><
SPAN
class
=selectedYear
dojoAttachPoint
="currentYearLabelNode"
>
2010年
</
SPAN
><
SPAN
class
=nextYear
__doClobber__
="true"
dojoAttachPoint
="nextYearLabelNode"
dojoAttachEvent
="onClick: onIncrementYear;"
>
2011年
</
SPAN
></
H3
></
TD
>
<
TD
class
=curveBR
vAlign
=top
></
TD
></
TR
></
TBODY
></
TABLE
></
TD
></
TR
></
TFOOT
></
TABLE
></
DIV
></
DIV
>
第一个子元素是一个隐藏域的表单,
第二个就是我们看见的文本输入框.
日期控件的如下:
<
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新闻
知识库
C++博客
博问
管理
相关文章:
struts2 变慢的处理办法
Weblogic 10下JSP el与ognl的问题与解决方法
如何让Struts2中datetimepicker 标签的输入框不可输入
struts2中iterator标签的相关使用(转)
JSP代码段中直接访问值valuestack栈内容(转)
在javascript中读取struts2 s:datetimepicker中的值(转)
<
2024年11月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
常用链接
我的随笔
我的文章
我的评论
我的参与
留言簿
给我留言
查看公开留言
查看私人留言
随笔分类
POI
文章分类
Java(2)
Maven(1)
struts2学习(6)
设计模式(1)
文章档案
2019年4月 (1)
2018年5月 (1)
2015年7月 (1)
2013年1月 (1)
2012年4月 (1)
2011年3月 (2)
2010年8月 (2)
2010年3月 (1)
2009年11月 (2)
2009年9月 (1)
2009年8月 (1)
2009年4月 (1)
收藏夹
struts2标签学习(7)
最新随笔
1. 初识Maven
2. Poi之Word文档结构介绍(转发)
3. 设计模式分类
4. window.open出现session超时!
5. struts2 变慢的处理办法
6. weblogic 密码丢失的问题
7. clob
8. Weblogic 10下JSP el与ognl的问题与解决方法
9. 如何让Struts2中datetimepicker 标签的输入框不可输入
10. 关于Object中clone()方法,详解
搜索
最新评论
阅读排行榜
评论排行榜