禁用/启用

时间:2016-06-30 18:43:58

标签: javascript html x-editable

我最近偶然发现启用/禁用X-Editable表单的问题(我已经尝试了几天后)还没有解决。任何帮助将不胜感激。

我创造了一个包含我问题核心的小提琴:

http://jsfiddle.net/xBB5x/11749/

  • 我有多个可编辑的标签;
  • 应使用ajax;
  • 将输入提交给服务器

到此为止,一切都很完美。但是,还有一个按钮基本上只是禁用和启用(禁用后)x可编辑功能。

如果在编辑标签之前单击此按钮 - 则不会进行AJAX调用。

你可能会发现可疑的事情:

  • 选择器:在我的(简化)示例中,选择器实际上并不需要。它就在那里,因为我们的应用程序的一部分是动态(重新)加载的。
  • 我为什么要这样做?我有多个标签应该都可以编辑 - 但我只有一个。因此,如果焦点发生变化,我会禁用所有焦点,并启用刚获得焦点的人。好吧,至少我试着这样做......

感谢您的帮助!

这是HTML:

<button type="button" id='thebutton'>Don't click Me!</button>
<div style="margin: 150px" id='navi'>
<h4>
<a href="#" class='title'>awesome 1</a>
</h4>    
<h4>
<a href="#" class='title'>awesome 2</a>
</h4>    
<h4>
<a href="#" class='title'>awesome 3</a>
</h4>
</div>
<div id='output'>
...
</div>

这是JS:

$('#navi').editable({
selector:'.title',
  url: function(params) {
    $.ajax({    
      url: '/echo/js/?js=SUBMITTED!',
      complete: function(response) {
        $('#output').html(response.responseText);
      },
      error: function() {
        $('#output').html('Bummer: there was an error!');
      },
    });
  },
  send: 'always'
});

jQuery('body').on('click', '#thebutton', function () {
            $('.title').editable('toggleDisabled');
            $('.title').editable('toggleDisabled');
})

已编辑 - 其他一些信息:

我们有一个由用户创建的导航(基本上是&#34;文件夹结构&#34;)。这意味着用户应该能够添加其他导航项并根据需要重命名。 用户只能重命名活动项目。每个项目的内容都会在主面板中动态加载。

The Navigation

因此,当用户选择一个项目时,将运行以下脚本(这将禁用所有链接上的x可编辑功能,并在新的活动链接上重新激活它:

        if (!$(this).hasClass("active")) {
                    // Load content to the main panel
                    DisplayOpRiskLeaf($(this).attr('id'));
                    // Change active navigation element
                    $('.oprisk-link').removeClass("active");
                    $(this).addClass("active");
                    $('.oprisk-leaves-panel').removeClass("active");
                    $(this).parents('.oprisk-leaves-panel').addClass("active");
                    // Change x-editable...
                    // disable all ($(this) is also getting disabled here)
                    $('.portfolio-title').editable('option', 'disabled', true);
                    // enable the active elemnt
                    $(this).editable('option', 'disabled', false);

                }            

0 个答案:

没有答案