遇到一個(gè)需求,需要根據(jù)當(dāng)前頁(yè)面的狀態(tài)動(dòng)態(tài)設(shè)置定義在input上的my97日期控件的onfocus事件是否啟用。幾經(jīng)周折,才搞定。
對(duì)于已經(jīng)寫(xiě)在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函數(shù)死活都解決不了。
最后只能用IE的detachEvent來(lái)解決,而用這個(gè)detachEvent又有兩個(gè)要注意的:
(1)detachEvent的事件必須是先前attachEvent的。
(2)函數(shù)不能帶參數(shù),故用了個(gè)自定義的無(wú)參的my97dp函數(shù)來(lái)中轉(zhuǎn)。
真是搞不懂,又不能專門(mén)花時(shí)間來(lái)把js事件機(jī)制搞得很清楚。
代碼如下:
?<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">