4

Rails 3.2 アプリで best_in_place 2.1.0 を使用しています。

値が相互に依存している最適な場所のフィールドのセットがあります。1 つを変更するとすべての値が変更されるため、いずれかから AJAX 要求が送信されたときに、すべての値の編集を無効にする必要があります。

お気付きのように、AJAX 要求が終了するのを待っている間、最適な場所で既に 1 つのフィールドが無効になっています。これを拡張して、すべてを無効にしたいだけです。

onclickをオーバーライドしてみました

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

しかし、それはうまくいきませんでした。ベスト イン プレース フィールドの作成前に呼び出されるように見えることもあれば、作成後に発生するように見えることもあります。いずれにせよ、私にはうまくいきませんでした。

"best_in_place:activate"jQueryトリガーを使うことも考えましたが、それは後で呼び出さthis.activateForm()れる BestInPlaceEditor.prototype{.. activate: }ため機能しません。

どうすればいいのかよくわかりません。最適な場所にあるフィールドのすべてまたは一部を動的に無効にするものはすべて機能します。

4

1 に答える 1

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;
}
于 2016-10-28T13:55:25.147 に答える