在AJAX请求期间使用js禁用所有best_in_place字段

时间:2013-08-01 20:52:26

标签: ruby-on-rails best-in-place

我在rails 3.2 app中使用best_in_place 2.1.0。

我有一组最佳位置字段,其值相互依赖。 因为修改一个会更改所有这些值的值,所以当从任何一个发送AJAX请求时,我需要禁用所有这些值的编辑。

如果您注意到,最好的位置已经在等待AJAX​​请求完成时禁用了一个字段。我只是想扩展它,以便它禁用所有这些。

我尝试重写onclick

$('.best_in_place').bind("onclick", function(e){ 
    e.stopPropogation();
    e.cancelBubble();
    return false; 
});

但这不起作用。有时它似乎在创建最佳就地字段之前被调用,但有时它似乎发生在之后。无论哪种方式,它都不适合我。

我还考虑过使用"best_in_place:activate" jQuery触发器,但是在this.activateForm() BestInPlaceEditor.prototype{.. activate: }之后调用它,这样就不起作用了。

我不确定该怎么做。任何能够动态禁用所有或选择最佳位置字段的东西都适用于我。

1 个答案:

答案 0 :(得分:1)

如果有人仍在为此寻找解决方案,我会在元素中添加一个类,并通过css取消事件:

在js:

$('.best-in-place.parent-setting').on("ajax:success", function(e, t) {
    var enable = $(this).data('bip-value');
    var childrenSettings = $(this).data('children-setting');
    $('.best-in-place.'+childrenSettings).toggleClass('disabled', !enable);
});

在css中:

.best-in-place.disabled{
  opacity: .5;
  pointer-events: none;
}