【问题标题】:jQuery / jEditable and jQuery UI Dialog. Re-populating table celljQuery / jEditable 和 jQuery UI 对话框。重新填充表格单元格
【发布时间】:2010-04-14 23:26:21
【问题描述】:

这是我第一次使用JS,所以我真的不知道我在做什么。

我有一个包含数据的表,并使用 jEditable 允许用户编辑数据并将其发布到我的 php 脚本。当用户点击“保存”时,它会使用来自 php 脚本的数据打开 jQuery UI,它似乎工作正常,但是,如果用户点击 Cancel 或 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;
      }
   });

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

【问题讨论】:

  • 也许我应该将原始数据保存为临时变量,然后在取消时将其写回表格单元格?我不知所措。

标签: javascript jquery jquery-ui jeditable


【解决方案1】:

我可能不对,但它可能是您使用onblur 调用的cancel 事件。尝试更改

onblur: "cancel"

onblur: "function(e){;}"

这基本上什么都不做。如果我的 jEditable 代码正确,它会在 onblur 事件时将输入值恢复为原始值,然后在单击取消按钮时调用该值。不过,我可能错了——我现在是凌晨 2 点 :)

【讨论】:

  • dare2be,感谢您的回复。 onblur: 部分直接取自 jEditable 文档:“@param String options[onblur] 'cancel', 'submit', 'ignore' or function ??”那部分运行良好。当我点击 jEditable textarea 时,它会变回编辑前的表格单元格的内容(即使它出于某种奇怪的原因在底部添加了换行符)。不恢复文本的部分是当我取消 jQuery UI 对话框时。在我看来,如果我错了,请纠正我,我在中间的某个地方看到了一些 Ajax 函数之王?
  • 对不起,我一定误会了你。但是,这使您的问题更加奇怪。我迷路了 - 明天会调查。
  • 嘿!你有没有把你调用的地方包裹起来 $(".editable_textarea").editable("/path/to/my/script.php", {...});与 $(document).ready(function() {...});?因为如果我以这种方式包装它,脚本对我来说非常好(即“取消”按钮恢复为原始状态)!
【解决方案2】:

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

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

对话框关闭时似乎没有调用 jEditable 的取消事件。

【讨论】:

  • 谢谢Jen,但这不起作用:(如果我添加,取消按钮根本不会做任何事情,在Escape上,我仍然看到一个空的表格单元格......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多