我正在使用数据库生成多个表单。 表单中的某些输入字段具有标记
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);
});
}
}
});
});
}
如果页面上只有一个表单,则没有问题。但是如果在所有表单中启用/禁用了两个或更多元素,因为所有输入都以每种形式连续编号。
是否有可能只找到位于同一表格中的元素?谢谢你的帮助: - )
答案 0 :(得分: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);
}
});
});