2011-04-25 45 views
1

我使用jqGrid單元格編輯和日期選擇器。除非由於某些奇怪的事件處理,否則一切運作良好,否則可能會導致用戶數據丟失。選擇單元格並設置其日期時,文本將放回可編輯單元格中,但不會將其傳回服務器,除非發生某些導航,或者在設置日期時按下回車鍵。這意味着,如果用戶只是輸入數據,並且他們不做這些額外的東西(關於哪些沒有反饋),編輯的值被保持在不靈活的狀態。jqGrid與日期選擇器不能安全地存儲數據

顯而易見的解決方案是在datepicker上使用onClose。這被調用,但似乎沒有辦法將數據寫入服務器。我試過使用saveCell,但是這會在寫入數據後打開單元格文本編輯器,所以如果數據無法正確寫入,則會給出一切正常的印象。我也嘗試過editCell,但似乎無限遞歸,或創建某種循環。我也試着編造一個的keydown如下:

colModel :[ 
    ... 
    {name:'date', index:'date', width:100, editable: true, 
    editoptions: { 
    size: 10, maxlength: 10, 
    dataInit: function(elem){ 
       setTimeout(function(){ 
       $(elem).datepicker({ 
        onClose: function(dateText, inst) { 
        var e = jQuery.Event("keydown");   
        e.which = 13; 
        $(elem).trigger(e); 
        } 
       ... 

我仍然得到與jQuery和jqGrid的交手,所以任何建議將是非常歡迎的。

回答

0

也許你應該在觸發「Enter」鍵之前設置焦點?像

setTimeout(function(){ 
    $(elem).focus().trigger({ type: 'keypress', charCode: 13 }); 
},100); 

你可以測試它嗎?

+0

經過測試,以及一些變化(即使用keydown而不是按鍵)。這確實看起來很合理,但沒有喜悅。 – morungos 2011-04-25 17:36:20

+0

@morungos:你能更準確地描述**什麼是錯誤的?我沒有任何當前的遠程保存數據和單元格編輯演示,所以我不能重現您的問題。我個人只使用內聯或/和表單編輯將數據保存在服務器上。 – Oleg 2011-04-25 17:59:22

+0

問題是這樣的:當單元格的datepicker關閉時,如何強制數據刷新到服務器。在這個階段,我們有一個有效的日期,它是完整的,所以它是有道理的。 – morungos 2011-04-25 18:04:41