2010-04-14 58 views
1

这是我第一次使用JS,所以我真的不知道我在做什么。jQuery/jEditable和jQuery UI对话框。重新填充表格单元格

我有一个数据表,并使用jEditable允许用户编辑数据并将其发布到我的PHP脚本。当用户点击“保存”时,它会用php脚本中的数据打开jQuery UI,但它似乎工作正常,但是,如果用户点击取消或Esc关闭jQuery UI对话框,它们又回到页面上,但是他们试图编辑的单元格现在完全是空的。我如何让细胞重新填充?

谢谢!

$(".editable_textarea").editable("/path/to/my/script.php", { 
    indicator : "<img src='/images/indicator.gif'>", 
    type : 'textarea', 
    submitdata: { _method: "post", uri: "<?php echo $this->uri->segment(3); ?>" }, 
    select : false, 
    submit : 'Save', 
    cancel : 'Cancel', 
    tooltip : "Click to edit...", 
    cssclass : "editable", 
    onblur: "cancel", 
    cssclass: "edit_destination", 
    callback: 
     function(value, settings) { 
      $(this).dialog({ 
       autoOpen: true, 
       width: 400, 
       modal: true, 
       position: "center", 
       resizable: false, 
       draggable: false, 
       title: "Pending Changes", 
       buttons: { 
        "Cancel": function() { 
         $(this).dialog("close"); }, 
        "Confirm Changes": function() { 
         document.findSameDestination.submit(); } 
       } 

      }); 

      $('form#findSameDestination').submit(function(){ 
       $(this).dialog('open'); 
       return false; 
      }); 

     $(this).editable("disable"); 
    }, 
    data: 
     function(value, settings) { 
      var retval = value.replace(/<br[\s\/]?>/gi, '\n'); 
      retval = retval.replace(/(<([^>]+)>)/gi, ''); 
      return retval; 
     } 
    }); 

仍然不知道如何解决这个问题,我没有足够的积分以提供赏金......

+0

也许我应该将原始数据保存为临时变量,然后将其写回到表格单元格中取消?我处于亏损状态。 – solefald 2010-04-15 21:12:18

回答

1

我可能不是正确的,但也可能是cancel事件你与onblur调用。尝试改变

onblur: "cancel" 

onblur: "function(e){;}" 

这将基本上什么也不做。如果我的jEditable代码是正确的,它会在onblur事件时将输入值恢复为原来的值,然后在点击Cancel按钮时调用它。不过,我可能是错的 - 它在我的地方是凌晨2点:)

+0

dare2be,谢谢你的回复。 onblur:部分直接来自jEditable文档: “@param字符串选项[onblur]'取消','提交','忽略'或功能??” 那部分工作正常。当我点击jEditable textarea时,它会在编辑之前更改回表格单元格的内容(即使它在底部出现一个换行符,出于某种奇怪的原因)。 不恢复文本的部分是当我取消jQuery UI对话框。在我看来,并纠正我,如果我错了,我看到中间某处的某个Ajax函数的国王? – solefald 2010-04-15 01:20:56

+0

对不起,我一定误解了你。但是,这使得你的问题更加诡异。我迷路了 - 明天将考虑它。 – 2010-04-15 02:06:05

+0

嘿!你包装了你调用$(“。editable_textarea”)。editable(“/ path/to/my/script.php”,{...})的地方。与$(document).ready(function(){...});?因为如果我以这种方式包装它,脚本完美地工作正常(即'取消'按钮恢复为原始)! – 2010-04-20 20:27:22

0

你可以在对话框的取消事件中调用blur事件吗?

Cancel": function() { 
         document.editable_textarea.blur(); 
         $(this).dialog("close"); 

它似乎并不像jEditable的取消事件在对话框关闭时被调用。

+0

谢谢你仁,但这不起作用:(如果我补充说,取消按钮什么也没有做,并在逃生,我仍然提出了一个空表格单元... – solefald 2010-04-15 17:57:28

+0

如何: 文件。可编辑(“取消”); – 2010-04-15 18:10:31

+0

同样的结果再次:( – solefald 2010-04-15 20:54:11