web-dev-qa-db-ja.com

AJAX応答がfalseの場合にフォームフィールドを表示

コンポーネントをいくつかの相互作用で拡張したいと思います。この目的のために、必要な場合にのみフォームにフィールドを表示するようにしています。これはform.xmlshowon- declarationsでうまく機能します。

ここで、ボタンクリックでトリガーされるAJAX- callがfalseを返す場合にのみフィールドを表示したいと思います。

もちろん、これをレイアウトファイルにハードコーディングすることもできます(少なくとも私はできると思います)。しかし、たぶん私がする方法があります

  • form.xmlで宣言されている要素を非表示にする
  • aJAX呼び出しがfalseを返す場合、この要素を再表示します
  • form.xmlなどの他の要素のインジケータとして、showon = 'myhiddenfield:1'の非表示でない要素を使用します

それについてのアイデアは?

1
MyFault

まあ、ajaxメソッドの成功パラメーター内で非表示/表示関数をアタッチできます。

var showMethod = function () {
    // show method code...
}

var hideMethod = function () {
    // hide method code...
}

$.ajax({
    type    : 'POST',
    data    : request,
    success : function(response) {
        if (response.yourvalue == false) {
            showMethod();
        } else {
            hideMethod();
        }
    }
});

メインフィールドが表示されるかどうかに関係なく、他のフィールドも影響を受ける必要があるように見えるため、これらすべてのフィールドに一度に同じことを適用するだけでよく、最初にメインフィールドの表示を切り替えて決定します。他の人が表示する必要がある場合。

更新:

私は今、あなたが望むものと少し混乱しています... xmlで何かを非表示にすることはできません。特定のパラメーターを添付するだけで、各フィールド出力の特定の機能に変換されます。 showonは、別のフィールドに特定の値がある場合にフィールドを表示します。したがって、これが発生するまでフィールドは非表示になります。これはjsとcssです。 Labelclassを使用して、特定のクラスをフィールドにアタッチすることもできます https://docs.joomla.org/Form_field#Common_attributes 。一般に、要素の表示/非表示の背後はとにかくcssです。

一方、私はこれを試していませんが、「ajaxフィールド」の値に基づいて、表示したいフィールドにshowonパラメータを設定し、falseが発生したときにそれらが表示されるかどうかを確認できます。

2
FFrewin