MDA/MDD/TDD/DDD/DDDDDDD
posts - 536, comments - 111, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
遇到一个需求,需要根据当前页面的状态动态设置定义在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">


评论

# re: 如何取消已经注册在input上的onfocus事件,以及unbind的问题  回复  更多评论   

2009-01-15 01:34 by otto
unbind当然不行,它只能处理bind上去的事件

可以用这样的方式
$('input').each (function(){this.onfocus="";});
修改一下即可

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


网站导航: