Posted on 2008-11-04 18:27 
leekiang 阅读(2755) 
评论(1)  编辑  收藏  所属分类: 
jquery(进去而已) 
			
			
		 
		遇到一个需求,需要根据当前页面的状态动态设置定义在input上的my97日期控件的onfocus事件是否启用。几经周折,才搞定。
对于已经写在input上的onfocus事件:
<input type="text" name="finishtime" id="finishtime"  readonly="readonly"
 onfocus=WdatePicker({skin:'whyGreen',dateFmt:'yyyy-MM-dd HH:mm'}) class="Wdate">
我用jquery的unbind函数死活都解决不了。
最后只能用IE的detachEvent来解决,而用这个detachEvent又有两个要注意的:
(1)detachEvent的事件必须是先前attachEvent的。
(2)函数不能带参数,故用了个自定义的无参的my97dp函数来中转。
真是搞不懂,又不能专门花时间来把js事件机制搞得很清楚。
代码如下:
 <script>
 function my97dp(){
 WdatePicker({skin:'whyGreen',dateFmt:'yyyy-MM-dd HH:mm'});
 }
 jQuery(function(){
jQuery('#finishtime').get(0).attachEvent('onfocus',my97dp);
 var status='${obj.status}';
 if(status=='2'||status=='3'){
 var t=jQuery('#finishtime').addClass('readonly')
 .attr('readonly',true).removeClass('Wdate').get(0);
 t.detachEvent('onfocus',my97dp);
 }
 });
 </script>
 <input type="text" name="finishtime" id="finishtime" readonly="readonly" class="Wdate">