在将InfoPath web化处理中,遇到重复节,可以使用clone() 的方法将重复节进行复制,但是,日期选择器无法显示。
通过调试,找到 input 控件,click事件是生效的,证明问题是datepicker的原因。
ui.datepicker.js debug in vs2008, 添加断点,发现
datepicker.js 对 input 控件会自动生成一个id,
145行:
target.id = 'dp' + (++this.uuid);
$.datepicker.uuid = new Date().getTime();
同时,在将 datepicker 附加到 input 控件的时候,
166行:
如果发现input 控件有this.markerClassName 样式 ( markerClassName: 'hasDatepicker', 109行),则跳出function,不再进行附加。
这样做是正确的,防止点击input 控件后,附加多个datepicker。
但是,当clone() 后,导致无法附加datepicker。
解决方案:
首先,将input 控件的id 自增1;
然后,去掉 input 控件的'hasDatepicker' 样式:
备注: 有时候我们单独调用ui.datepicker.js不能解决问题的时候,需要查看源文件,找到问题所在。