0

データベースを使用して複数のフォームを生成しています。フォームの入力フィールドの一部にタグが含まれています

dep="XY"

ここで、XY は依存する入力要素の名前です。

例:

< input type="checkbox" name="R5" id="c1" dep="R6" >

< input type="radio" name="R6" value="V1">

チェックボックスR5が有効になっている場合、ラジオボタンR6が有効になります

現在、このjqueryコードを使用して要素を有効/無効にしています:

function onChangeInputRadioCheckboxDependencies() {
var inputs = $('input');
inputs.change(function() {
    inputs.each(function() {
        var dep = $(this).attr('dep');
        if ( typeof dep != 'undefined') {
            var group = $(this).find('input[name=' + dep + ']');
            if ($(this).is(':checked')) {
                group.each(function() {
                    group.removeAttr('disabled');
                });
            } else {
                group.each(function() {
                    group.attr('disabled', true);
                    group.prop('checked', false);
                });
            }
        }
    });
});
}

ページにフォームが 1 つしかない場合は問題ありません。ただし、2 つ以上の要素がある場合は、すべての入力が各フォームで連続して番号付けされるため、すべてのフォーム内で有効/無効になります。

同じフォームにある要素だけを見つける可能性はありますか? ご協力いただきありがとうございます :-)

4

1 に答える 1

1

試す

$(document).ready(function () {
    $('form').on('change', 'input[dep]', function () {
        var dep = $(this).attr('dep');
        var group = $(this).closest('form').find('input[name=' + dep + ']');
        if ($(this).is(':checked')) {
            group.prop('disabled',false);
        } else {
            group.prop('disabled', true);
            group.prop('checked', false);
        }
    });
});
于 2013-09-10T10:07:01.233 に答える