每页具有多个表单的输入元素之间的依赖关系

Dependencies between input elements with multiple forms per page

本文关键字:输入 元素 依赖 关系 之间 表单      更新时间:2023-09-26

我正在使用数据库生成多个表单。表单中的某些输入字段具有标记

dep="XY"

其中 XY 是依赖输入元素的名称。

例:

<输入类型 名称="R5" id="c1" dep="R6">

<输入类型 名称="R6" 值="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);
                });
            }
        }
    });
});
}

如果页面上只有一个表单,则没有问题。但是,如果存在两个或更多元素,则在所有表单中启用/禁用元素,因为所有输入在每个表单中都连续编号。

是否有可能只找到位于相同形式的元素?感谢您的帮助:-)

试试

$(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);
        }
    });
});