【问题标题】:Need some guidance on creating a jEditable custom input需要一些有关创建 jEditable 自定义输入的指导
【发布时间】:2013-01-10 18:44:53
【问题描述】:

我正在使用 jEditable 插件和以下代码在打开和关闭之间切换页面上的一系列设置。

$(document).ready(function() {
$('.editable_select').editable(''http://someexamplepage.com/save.php', { 
    indicator: '<img src="/images/spinner.gif">',
    data   : " {'&#x2713;':'&#x2713;','&#x2717;':'&#x2717;'} ",
    tooltip : 'Click to Edit',
    type   : 'select',
    onblur : 'submit',
    style  : 'inherit'
    });
});

然后在 html 中:

<b class="editable_select" id="setting1" style="display:inline">&#x2713;</b>

当单击指示打开的复选标记时,它会生成一个下拉菜单,其中包含打开的复选标记和关闭的 X,然后用户可以选择该菜单。我更喜欢的是单击 check/X 不会打开下拉菜单,而是将当前的 On 或 Off 设置发送到 save.php 文件。然后我可以只编写 save.php 文件来返回相反的值,这样单击就可以在两者之间切换而无需打开任何类型的编辑窗口。我尝试了以下代码:

$(document).ready(function() {
$('.editable_select').editable('http://someexamplepage.com/save.php', { 
    indicator: '<img src="/images/spinner.gif">',
    tooltip : 'Click to Edit',
    onclick : 'submit',
    style  : 'inherit'
});

});

但单击文本仍会打开一个小编辑窗口,这是我不想要的。我还是 JavaScript 和 jQuery 的新手,因此非常感谢任何帮助!

【问题讨论】:

  • 你能做一个jsfiddle或提供一个活生生的例子吗?但老实说,如果您只是想在后端记录单击操作,只需为这些按钮的单击事件编写一个侦听器,并将其连接到 $.ajax 调用。无需使用插件。
  • Here's a live example。我主要关注 PHP 和 MySQL,所以我对 Javascript 和 jQuery 有非常基本的掌握,这就是为什么我尽可能使用预制插件。

标签: php javascript jquery mysql jeditable


【解决方案1】:

我不会为此使用插件,而是在 ready 事件上运行一个非常简单的 jQuery。

我会将当前状态作为数据属性包含在 DOM 中,因此将您的标签更改为:

<b class="editable_select" id="[ID FOR ITEM]" data-state="checked">&#2713;</b>

然后执行以下操作:

$(function(){
    var update_dom = function(data){
        var item_id = data.id;
        var state;
        data.state === 'checked' ? state = '✓' : state = '✗';
        $('#'+item_id).data('state', data.state).html(state);
    };

    var selected = function(evt){
        var item_id = $(this).attr('id');
        var state = $(this).data('state');
        $.ajax({
            url: PATH_TO_SCRIPT, 
            data: {id: item_id, state: state},
            type: "POST",
            success: update_dom
        });
    }

    $('.editable_select').click(selected);
});

这会将click 事件绑定到具有editable_select 类的所有内容。当您单击它时,它将调用selected 函数,该函数将从DOM 中获取数据,并调用您的脚本。当你的脚本完成后,它应该返回一个响应(JSON 在这里很好),并且success 处理程序将更新 DOM 并将状态显示给用户。

【讨论】:

  • 感谢您的帮助,但作为 javascript 新手,我并不是 100% 清楚哪些部分应该保持原样,哪些是占位符。我在这里开始了一个 jsFiddle:jsfiddle.net/4nU7v
  • 只需替换 PATH_TO_SCRIPT 应该几乎是批发价。这将捕获 元素上的点击事件,将当前状态发送到后端,接收新状态对象并将视觉显示(和数据属性)设置为服务器返回的值。
  • 我明白了。我不确定“update_dom”部分;看起来某种信息应该由我代替,因为它周围没有引号。为了清楚起见,如果我在后端使用 PHP 作为“PATH_TO_SCRIPT”,那么我在最后回显的内容将会显示出来,对吗?这就是我到目前为止的工作方式。
  • 您将希望向客户端返回一个 JSON 文档。所以脚本的输出应该有一个Content-type: application/json,内容应该是{id: ITEM_ID, state: NEW_STATE},这两个值是可变的。
猜你喜欢
  • 2011-08-17
  • 2013-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-15
  • 1970-01-01
相关资源
最近更新 更多