如何取消已经注册在input上的onfocus事件,以及unbind的问题

遇到一个需求,需要根据当前页面的状态动态设置定义在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" >

你可能感兴趣的:(如何取消已经注册在input上的onfocus事件,以及unbind的问题)