2011-04-25 69 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