【问题标题】:Autogrow on jEditable submits everything instead of doing a AJAX calljEditable 上的 Autogrow 提交所有内容,而不是执行 AJAX 调用
【发布时间】:2013-05-01 02:07:53
【问题描述】:

我目前正在使用 jEditable 插件来编写可更新的文本。我的服务器端是使用 Struts2 开发的,我调用的服务器 url 是返回 JSON 结果的 struts 操作。我使用以下代码将 jeditable 加载到我的字段(即 H1):

 $("h1.myclass").editable("/MyApp/dinamic/updateText.action", {
    indicator : "<center><img src='/MyApp/images/loading.gif'></center>",
    submit    : 'Save',
    cancel    : 'Cancel',
    tooltip   : "Click to edit",
    onblur    : "ignore",
    name      : "myField",
    callback : function(value, settings) {
            alert(JSON.stringify(value));
    }
});

如您所见,在这段代码中,我还没有使用type : autogrow 功能,到目前为止它运行良好。问题是当我添加type : autogrow 时,会显示相应的文本,但是当我单击保存按钮时,浏览器会重定向到类似的 url

http://localhost:8080/MyApp/myform.action?myfield=YadaYada

YadaYada 是我尝试保存的实际文本,myform.action 是我已经存在的页面。

有人知道为什么会出现这个错误吗? \

OBS:我也试过用growfield2代替自动增长,结果是一样的。

【问题讨论】:

  • 你想清楚了吗?我也有同样的问题。
  • 不幸的是没有...我能设法实现的唯一修复是禁用自动增长... =(

标签: jquery struts2 jeditable autogrow


【解决方案1】:

好的,所以我不完全确定我是否正确,但我一直在尝试自己解决这个问题。我发现如果您的某种代码“略微”关闭,那么它将导致页面重新路由。我已经让 autogrow 工作了,我相信这应该对你有用:

        $.editable.addInputType('autogrow', {
            element: function (settings, original) {
                var textarea = $('<textarea />');
                if (settings.rows) {
                    textarea.attr('rows', settings.rows);
                } else {
                    textarea.height(settings.height);
                }
                if (settings.cols) {
                    textarea.attr('cols', settings.cols);
                } else {
                    textarea.width(settings.width);
                }
                $(this).append(textarea);
                return (textarea);
            },
            plugin: function (settings, original) {
                $('textarea', this).autogrow(settings.autogrow);
            }
        });

       $("h1.myclass").editable("/MyApp/dinamic/updateText.action", {
            type: "autogrow",
            indicator: "<center><img src='/MyApp/images/loading.gif'></center>",
            submit: 'Save',
            cancel: 'Cancel',
            tooltip: "Click to edit",
            onblur: "ignore",
            name: "myField",
            callback: function (value, settings) {
                alert(JSON.stringify(value));
            },
            autogrow: {
                lineHeight: 16,
                maxHeight: 512
            }
        });

【讨论】:

  • 很抱歉,但除了添加带有type : "autogrow" 的行和自动增长高度的设置外,我看不到您添加的内容。据我所知,您的 addInputType 是标准的吗?你没有做任何广告。
  • 是的,addInputType 是标准的。我认为更重要的部分是我将 autogrow: {} 部分以及设置类型。当我把它关闭时,它的行为就像你描述的那样。你试过了吗?
猜你喜欢
  • 2010-09-14
  • 2013-01-24
  • 2011-09-27
  • 2021-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多