将唯一ID添加到由javascript使用foreach生成的输入中

将唯一ID添加到由javascript使用foreach生成的输入中,javascript,php,ajax,Javascript,Php,Ajax,我想将唯一id附加到输入 这是我的意见: foreach( $subItems AS $item ) { <input type="checkbox" id="checkbox_sub" class=" flat"name="sub_elements[]" required="required"> <input

我想将唯一id附加到输入

这是我的意见:

foreach( $subItems AS $item ) {
    <input type="checkbox" id="checkbox_sub" class=" flat"name="sub_elements[]" required="required">                                                                            

    <input type="text" id="sub_min_points" name="sub_min_points[]" disabled> 
}
上面的代码包含来自此插件的方法

澄清我的想法:

通过foreach为动态插入的输入创建唯一的ID,然后使用选中和未选中的复选框中的变量

例如:

这只是澄清,我不知道如何在JS中实现 使用increment value++i和append to the id=并在将增量变量追加到原始id后使用整个id来更改所有

$('#checkbox_sub+i+').on('ifChecked', function(event){
    $('#sub_min_points+i+').removeAttr('disabled');
});
$('#checkbox_sub+i+').on('ifUnchecked', function(event){
    $( '#sub_min_points+i+' ).attr( "disabled" , 'disabled') ;
});
我需要的是:

复选框\u sub\u 1选中时->sub\u min\u points\u 1禁用属性将被删除

复选框\u sub\u 2选中时->sub\u min\u points\u 2 disabled属性将被删除

复选框\u sub\u 3选中时->sub\u min\u points\u 3 disabled属性将被删除*


这样做不需要元素ID,因为可以编写JS,在单击第n个元素时,更新相应的第n个元素

下面是一种方法,使用jQuery计算单击复选框的索引,并选择相应的文本输入。注意,在click事件处理程序中,这是指clicked元素。顺便说一下,我假设jQuery是可以的,即使问题没有jQuery标记,因为问题正文中显示了jQuery代码

请注意,问题中显示的foreach将成对输出复选框和文本输入,而不是首先输出所有复选框,然后输出生成ID示例下问题中显示的所有文本输入,因此在下面的演示中,我使用了成对输出的HTML。但是,如果您确实先有所有的复选框,然后是所有的文本输入,那么同样的JS也可以工作,因为它同样使用每个复选框的相对位置来决定更新哪个复选框

var cbs=$'input[name=sub_elements[]] var inputs=$'input[name=sub_min_points[]] cbs.on'click',函数{ inputs.eqcbs.indexthis.prop'disabled',!this.checked }
因为我使用的是ICheck插件,所以上面的代码需要像这样编辑才能与我一起工作

var cbs = $('input[name="sub_elements[]"]') ;
var inputs = $('input[name="sub_min_points[]"]') ;
cbs.on('ifChecked',  function(event) {
    inputs.eq(cbs.index(this)).prop('disabled', false)
})

cbs.on('ifUnchecked',  function(event) {
    inputs.eq(cbs.index(this)).prop('disabled', true)
})

这也是JSX代码吗?我将使用.prop。没问题。但是我在javascript方面很弱,我需要一个例子,并且要知道输入可以增加或减少,因为它们是根据数据库行thanx自动生成的。非常感谢您的帮助,我对代码进行了少量编辑,结果成功了:。
$('#checkbox_sub+i+').on('ifChecked', function(event){
    $('#sub_min_points+i+').removeAttr('disabled');
});
$('#checkbox_sub+i+').on('ifUnchecked', function(event){
    $( '#sub_min_points+i+' ).attr( "disabled" , 'disabled') ;
});
var cbs = $('input[name="sub_elements[]"]') ;
var inputs = $('input[name="sub_min_points[]"]') ;
cbs.on('ifChecked',  function(event) {
    inputs.eq(cbs.index(this)).prop('disabled', false)
})

cbs.on('ifUnchecked',  function(event) {
    inputs.eq(cbs.index(this)).prop('disabled', true)
})