Javascript 在选择更改时动态禁用输入
我有一个初始html代码,它创建了一个选择和输入以及一个按钮:Javascript 在选择更改时动态禁用输入,javascript,jquery,html,Javascript,Jquery,Html,我有一个初始html代码,它创建了一个选择和输入以及一个按钮: <div class="form-group"> <div class="table-responsive"> <table class="table table-bordered" id="dynamic_field"> <tr> <td>
<div class="form-group">
<div class="table-responsive">
<table class="table table-bordered" id="dynamic_field">
<tr>
<td>
<select class="form-control name_list" name="product[]" id="prod_1" required="required">
<option value="" selected="selected">Select ...</option>
<option value="on">ON</option>
<option value="off">OFF</option>
</select>
</td>
<td><input type="number" name="qte[]" id="qte_1" placeholder="Qte" class="form-control name_list" required="required"/></td>
<td>
<a name="add" id="add" class="btn btn-success">Add More</a>
</td>
</tr>
</table>
</div>
</div>
您可以使用正则表达式从ID中获取任何数字,并使用该数字选择复选框
$(document).on('change', '[id^=prod_]', function () {
var v = this.value;
var n = this.id.replace(/\D+/,'')
$('#qte_' + n).prop('disabled', v === 'off');
});
$document.readyfunction{
var i=1;
$“添加”。单击函数{
i++;
$'dynamic_field'。追加
+
+
+
“选择…”+
“开”+
“关”+
+
+
+
+
“X”+
+
;
};
$document.on'click','btn_remove',函数{
var button_id=$this.attrid;
$'row'+按钮id+。删除;
};
$document.on'change','id^=prod_]',函数{
var v=该值;
var n=this.id.replace/\D+/,
$'qte_u'+n.prop'disabled',v=='off';
};
};
选择
在…上
关
添加更多
您根本不需要ID,只需处理所有name='product[]'选择的更改,然后在同一行中找到输入[name='qte[]']:
$(document).on("change", "select[name='product[]']", function() {
var $this = $(this);
$this.closest("tr").find("input[name='qte[]']").prop("disabled", $this.val() == "off");
});
如果行中只有一个输入,您可以根据需要关闭[name='qte[]']部分
实例:
$document.onchange,选择[name='product[]',函数{
var$this=$this;
$this.closesttr.findinput[name='qte[]'].propdisabled,$this.val==off;
};
选择
在…上
关
添加更多
选择
在…上
关
添加更多
选择
在…上
关
添加更多
尝试在change函数上使用classname而不是id。创建唯一id不是一个好主意
用于从父元素中查找最近的选择器
用于选择内部元素
$document.on'change','name_list',函数{
var x=$this.val;
如果x==关{
$this.closest'td'。next'td'。查找'input'。prop'disabled',true;
}否则{
$this.closest'td'。next'td'。find'input'。prop'disabled',false;
}
};
$document.readyfunction{
var i=1;
$“添加”。单击函数{
i++;
$'dynamic_field'。追加
+
+
+
“选择…”+
“开”+
“关”+
+
+
+
+
“X”+
+
;
};
$document.on'click','btn_remove',函数{
var button_id=$this.attrid;
$this.closest'.row'.remove;
};
};
选择
在…上
关
添加更多
我没有真正理解你的代码,但我尝试了一下,这里有一个语法错误var n=this.id.replace\D,;如果有多行,请确保在行中的按钮上修复id=add。文档中不能有多个id=add。
$(document).on('change', '[id^=prod_]', function () {
var v = this.value;
var n = this.id.replace(/\D+/,'')
$('#qte_' + n).prop('disabled', v === 'off');
});
$(document).on("change", "select[name='product[]']", function() {
var $this = $(this);
$this.closest("tr").find("input[name='qte[]']").prop("disabled", $this.val() == "off");
});