Javascript 如何禁用循环中的文本框?

Javascript 如何禁用循环中的文本框?,javascript,php,jquery,html,Javascript,Php,Jquery,Html,我不知道如何正确引用我的代码来禁用带有复选框的文本 <form method='POST'> <?php $index = 0 ; while($index <= 4){ echo "<input class='click' type='text' data-text='test$index' id='text$index' value='text$index' disabled>test$index</input><br>

我不知道如何正确引用我的代码来禁用带有复选框的文本

<form method='POST'>
<?php

$index = 0 ; 
while($index <= 4){
    echo "<input class='click' type='text' data-text='test$index' id='text$index' value='text$index' disabled>test$index</input><br>";
    echo "<input type='checkbox' id='test$index' >test$index</input><br><br>";
    $index++;
}

?>
</form>
下面是通过堆栈片段进行的实时演示

$(文档).ready(函数(){
$('.click').change(函数(){
var disable=$(this.attr('data-text');
if((“#”+禁用).prop('checked')){
$('#'+disable).prop('disabled',false);
}否则{
$('#'+disable).prop('disabled',true);
}
});
});

测试0

测试0

测试1
测试1

测试2
测试2

测试3
测试3

测试4
测试4

根据以下内容:

ID和名称标记必须以字母([a-Za-z])开头,并且可以是 后跟任意数量的字母、数字([0-9])、连字符(“-”), 下划线(“”)、冒号(“:”)和句点(“.”)

您的元素ID似乎是此处的编号:

echo "<input type='checkbox' id='test$index' >

更简单的方法,无需使用ID和prev()以及基于选中的
的简单布尔切换

$(':checkbox').change(function(){
   $(this).prev().prop('disabled', this.checked);      
});

试试这个:我希望我已经解决了你的问题,这是完整的代码

</html>
<form method='POST'>
<?php
$index = 0 ; 
while($index <= 4){
    echo "<input  type='text'  id='text$index' value='text$index' >test$index</input><br>";
    echo "<input  class='click'  id='test$index' data-text='$index' type='checkbox'  >test$index</input><br><br>";
    $index++;
}
?>
</form>
</html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
$(document).ready(function() {
        $('.click').click(function(){
    var disable = $(this).attr('data-text');
 if ("#"+disable.change ){
       $("#text"+disable).attr("disabled",  $(this).is(':checked')); 
        }
});
});
</script>


我没有看到任何属性
'data-menu'
属性('disabled',boolean)
有什么问题?您的答案没有提供任何理由说明您的代码应该在OP代码不起作用的地方工作t@Mikey元素的属性和属性不一样这是真的,只是修正了我的答案。很可能他的问题是选择器/元素ID。ID可以在html5中以数字开头。。。更大的问题是重复ID@charlietfl真的!谢谢你纠正我。你用的是什么doctype?我没有看到重复的ID。您是否属于
data text='test$index'
id='test$index'
?因为我的文本框ID是
ID='text$index'
。我以前使用过类似的代码来操作div上的
.toggle()
。我只是想转换它,这样我就可以在循环输入中使用它,因为我读错了,错过了
test
text
之间的区别。用一些实时的htmlI创建一个简单的演示。对不起,我对这个论坛很陌生。如何创建演示?您可以使用许多沙箱站点,如jsfiddle.net、jsbin.com、codepen.io、plnkr.co以及
堆栈片段
在问题中,我尝试了堆栈片段和jsfiddle.net,但没有一个在其实时演示中运行php脚本:(很抱歉,标题放错了,但您的代码可能需要进行一些调整。我将问题命名为“如何禁用循环中的文本框?”而不是“如何在选中时从循环中的文本框中删除禁用的文本框?”谢谢,我刚刚刷新了页面,因为我正在尝试调整您的代码。如果其他选项对我有效,则此选项适用。):)非常感谢
if(“#”+disable.change){$(“#text”+disable).prop(“disabled”、!$(this.is(':checked'));}否则{$(“#text”+disable.prop(“disabled”、$(this).is(':checked'))}
$('#'+disable).prop('disabled', true);
$(':checkbox').change(function(){
   $(this).prev().prop('disabled', this.checked);      
});
</html>
<form method='POST'>
<?php
$index = 0 ; 
while($index <= 4){
    echo "<input  type='text'  id='text$index' value='text$index' >test$index</input><br>";
    echo "<input  class='click'  id='test$index' data-text='$index' type='checkbox'  >test$index</input><br><br>";
    $index++;
}
?>
</form>
</html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
$(document).ready(function() {
        $('.click').click(function(){
    var disable = $(this).attr('data-text');
 if ("#"+disable.change ){
       $("#text"+disable).attr("disabled",  $(this).is(':checked')); 
        }
});
});
</script>