4

Jqgrid では、このような任意のフィールドに必要な属性を適用します

 { name: 'Comments', index: 'Comments', editable: true, editrules: { required: true }, edittype: 'textarea' }

これを動的に行うにはどうすればよいですか?別のフィールド (ドロップダウン/コンボボックスの選択値など) に基づいてフィールドを必須にしたい

ドロップダウンの選択イベントなど、コードを配置する場所を知っています。しかし、私が提供したコードサンプル以外の方法で必要な属性を適用する方法はありません..

4

1 に答える 1

6

イベントを使用して選択コントロールの変更を監視し、editrulesrequiredのオプションの値を変更することをお勧めします。

たとえば、デモでは、「ship_via」列の選択コントロールで「focusout」イベントを使用して、列「note」のeditrulesrequiredのオプションを変更しました。ここで提案したバグ修正をコードで使用したため、「focusout」イベントを使用しました。代わりに他のイベントを使用することもできますが、別のブラウザーでテストする必要があります。

デモで使用したコードは

{name: 'ship_via', index: 'ship_via', width: 105, align: 'center', editable: true,
    formatter: 'select', edittype: 'select', editoptions: {
        value: 'FE:FedEx;TN:TNT;IN:Intim',
        defaultValue: 'IN',
        dataEvents: [
            {
                type: 'focusout',
                fn: function (e) {
                    $grid.jqGrid('setColProp', 'note', {
                        editrules: {required: ($(e.target).val() !== "IN")}
                    });
                }
            }
        ]
    },
    stype: 'select', searchoptions: {
        sopt: ['eq', 'ne'],
        value: ':Any;FE:FedEx;TN:TNT;IN:IN'
    } },
{ name: 'note', index: 'note', width: 60, sortable: false, editable: true,
    edittype: 'textarea' }
于 2012-04-23T07:57:52.630 に答える