it-swarm-ja.com

jQueryの隠しフィールドをリセットするウィジェット「保存」

私は私が作成したウィジェットプラグインを持っていて、それは約10個のフィールドセットをリストしています。 jQueryは最初に実行され、値を持たないフィールドセットを非表示にします。 「追加」および「削除」フィールドセットを許可するボタンもあります。

「保存」するとき以外は、すべてうまくいきます。 [保存]をクリックすると、すべてのjQueryが機能しなくなり、すべての非表示のフィールドセットが表示され、[追加]ボタンと[削除]ボタンが機能しなくなります。ウィジェットを正しく使用し続ける唯一の方法は、ページを更新することです。

これを引き起こしている可能性があるもの、または考えられる解決策を誰かが考えていますか?

1
Dave Hunt

あなたが探しているものに応じて、jQuery.live()、またはjQueryのlivequeryプラグインを探しています。 (あなたがonChangeイベントを使う必要があるならば、2番目は適切なものです。)

現状では、フォームのタグはajaxを使用して再ロードされ、jQuery(document).ready()はそのままでは呼び出されないので、保存ボタンが呼び出されてもjQueryフックは呼び出されません。

1

あなただけのjQuery.ajaxコールバック関数の「成功」の中にコントロールを再バインドする必要があります。

.live()によるトリガーのバインドは別の選択肢かもしれません - 私は個人的には.on()関数を好みます。

DOMインスペクタを使ってDOMイベントバインディングをチェックするだけです。

1
Martin Zeitler

これはAjaxのことです。ウィジェットを保存したときにスクリプトが再び機能するようにするための1つの解決策:

jQuery(document).ajaxSuccess(function(event, xhr, settings) {
    var widget_id_base = 'your-widget-id-base';
    if(settings.data.search('action=save-widget') != -1 && settings.data.search('id_base=' + widget_id_base) != -1) {

        // Do your stuff again here

    }
});
1
Marcio Duarte