Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 禁用/启用后X-Editable AJAX调用不起作用_Javascript_Html_X Editable - Fatal编程技术网

Javascript 禁用/启用后X-Editable AJAX调用不起作用

Javascript 禁用/启用后X-Editable AJAX调用不起作用,javascript,html,x-editable,Javascript,Html,X Editable,最近,我偶然发现了一个启用/禁用X-Editable表单的问题,但我(经过几天的尝试)还无法解决这个问题。任何帮助都将不胜感激 我创造了一把小提琴,包含了我问题的核心: 我有多个可编辑的标签 输入应该使用ajax提交到服务器 到目前为止,一切都很完美。但是还有一个按钮,它基本上只是禁用和启用(在禁用之后)x-editable功能 如果在编辑标签之前单击此按钮,则不会进行AJAX调用 您可能会发现可疑的事情: 选择器:在我的(简化)示例中,实际上并不需要选择器。这是因为我们的应用程序的部分

最近,我偶然发现了一个启用/禁用X-Editable表单的问题,但我(经过几天的尝试)还无法解决这个问题。任何帮助都将不胜感激

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

  • 我有多个可编辑的标签
  • 输入应该使用ajax提交到服务器
到目前为止,一切都很完美。但是还有一个按钮,它基本上只是禁用和启用(在禁用之后)x-editable功能

如果在编辑标签之前单击此按钮,则不会进行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>

已编辑-一些附加信息:

我们有一个导航(基本上是一个“文件夹结构”),由用户创建。这意味着用户应该能够添加额外的导航项,并根据需要重命名它们。用户只允许重命名活动项。在主面板中动态加载每个项目的内容

因此,当用户选择一个项目时,将运行以下脚本(在所有链接上禁用x-editable功能,并在新的活动链接上对其进行反应):

        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);

                }            

禁用双重切换的目的是什么?你能解释一下你想要的行为中没有发生的是什么吗?我在问题中添加了一些额外的信息。在我对“切换”的定义中执行两次与不执行相同。如果您尝试在第一次切换时触发某个事件,为什么不直接调用它?这样做可能永远不会触发活动事件,因为在我对“切换”的定义中,在运行选择器之前,dom已更改回做两次和不做是一样的。-我完全同意。但是如果你看一看JSFIDLE,这不是发生的事情。另一个例子:我有10个项目,其中一个是可编辑的。现在我点击另一个项目(当前不可编辑),希望它可以编辑。因此我禁用了所有10个项目(所以我得到了之前可编辑的项目)并启用了新的项目。对不起,我忘记了上面示例中提到的要点:新的可编辑项目(我刚才单击的项目)被禁用(它已经被禁用)再次启用。禁用双重切换的目的是什么?您能解释一下您想要的行为是什么,但没有发生吗?我在问题中添加了一些附加信息。在我对“切换”的定义中执行两次与不执行相同。如果您尝试在第一次切换时触发某个事件,为什么不直接调用它?这样做可能永远不会触发活动事件,因为在我对“切换”的定义中,在运行选择器之前,dom已更改回做两次和不做是一样的。-我完全同意。但是如果你看一看JSFIDLE,这不是发生的事情。另一个例子:我有10个项目,其中一个是可编辑的。现在我点击另一个项目(当前不可编辑),希望它可以编辑。因此我禁用了所有10个项目(所以我得到了之前可编辑的项目)并启用了新项目。对不起,我忘记了上面示例中提到的要点:新的可编辑项目(我刚才单击的项目)被禁用(它已经被禁用)并再次启用。
        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);

                }