web-dev-qa-db-ja.com

JFormフィールドの「readonly」タグを動的に変更する

JFormを取得し、そこにいくつかのフィールドを取得しました。別のフィールドの値が「0」の場合、そのフィールドを無効にしたいと思います。ロード中にフォームを準備することでそれができることはわかっていますが、その「ライブ」を解決したいので、ユーザーがクリックすると、readonlyがすぐに設定または設定解除されます。

どうすればこれを解決できますか?私はいくつかのJQueryを実行する必要があると思います-残念ながら、私はjQueryやこれについて何も知りません。

前もって感謝します :-)

1
MyFault

Joomlaは「showon」と呼ばれる新しいフォームフィールド属性を導入しました。フォームフィールドxmlにその属性を追加できます。

属性showonを追加すると、別のフィールドの値に基づいてフィールドを非表示にすることができます。

「foo」が「1」に設定されている場合にのみフィールド「bar」を表示する構文:

<field
    name="foo"
    type="list"
    >
    <option value="1">JYES</option>
    <option value="0">JNO</option>
</field>
<field
    name="bar"
    type="text"
    showon="foo:1"
/>

複数の値を照合するには、値のコンマ区切りのリストを提供できます。お気に入り showon="foo:1,2"

これはPullRequestで導入されました: https://github.com/joomla/joomla-cms/pull/3379 、Joomla 3.2.4以降で利用可能です。

1
Sahil Purav

次のように、値に基づいてdisabled属性を追加することにより、jQueryを使用してこれを簡単に実現できます。

jQuery(document).ready(function($) {

    var inputFirst  = $('#jform_choose0');
    var inputSecond = $('#jform_choose1');

    inputFirst.on('change', function(){

        if ($(this).val() == 0) {
            inputSecond.prop('disabled', true);
        }
        else {
            inputSecond.prop('disabled', false);
        }

    });

});

これは、テストするためのライブプレビューです。

http://jsfiddle.net/k3s6g2f7/

もちろん、独自の入力フィールドに従って定義されているIDを変更する必要があります。

0
Lodder