jquery demo 部分問題解決方案總結

這幾天在折騰 jquery 和 html5 的demo,在做到 jquery 的datepicker 組件時出現了一些問題:

一般的我們在頁面加載完成後就綁定datepicker,即:

$(function() {
  $( "#datepicker" ).datepicker({ minDate: '07/02/2011', maxDate: "+1M +10D" });
});

但是我的demo中是這樣的:用戶需要把想要的操作拖拽到可操作區域中去,然後在區域中生成一個操作項,操作項有開始時間和結束時間,這裏的datepicker是需要在用戶拖拽後才能綁定的,所以,我需要在用戶拖拽後,對所有操作項都執行上面的代碼(這裏之前存在的項就會被設置多次),而不是在頁面加載成功後。

1. 如果我修改了操作項的時間後,又拖拽了一個操作項進來,那麼之前的時間就會恢復到默認值,這就是一個bug。後來我才發現,拖拽進來時的語句是:obj.innerHTML+=“...”。

我想到應該是js在處理這句語句時,之前修改過的時間沒有被js記錄下來,而是直接用的默認值,這可怎麼好,鬱悶,後來終於找到了jquery的 .append()方法,用這句話就沒有問題,它只是在目前的基礎上加上一些html代碼,而沒有重新組織後再顯示,就避免了恢復默認值的問題。

2. 我試過兩個datepicker先後添加到同一元素上,而結果是如果元素已經有了datepicker,就不會再次創建了。如果後一次的數據與前一次的不一樣,比如:默認最小值是7月2號,但是當我選擇了開始時間後,結束時間中的最小值應該變成開始時間。這種情況下就需要先把之前的datepicker刪除掉再次賦值:

var min=$("#startTime").val();

obj.datepicker( "destroy" );

obj.datepicker({ minDate:min, maxDate: "+1M +10D" });

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章