我已经创建了一个从数据库填充的表单。
结果显示在屏幕上,默认情况下,我会禁用除每行初始下拉列表之外的所有表单字段。
更改下拉列表的值应启用或禁用该特定行上的表单字段。这仅适用于第一行,但不适用于后续行。
我认为这是因为我只是引用了第一行,但我确定如何更改它..
这是我到目前为止所记录的......记住这只有2行,实时数据可能会显示很多行。
<html>
<head>
<title>test</title>
<script src="jquery-1.8.0.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#option').change(function(){
if($(this).val()=="2"){
$("#name").removeAttr("disabled");
$("#id").removeAttr("disabled");
$("#home").removeAttr("disabled");
$("#active").removeAttr("disabled");
}
if($(this).val()!="2"){
$("#name").attr("disabled", "disabled");
$("#id").attr("disabled", "disabled");
$("#home").attr("disabled", "disabled");
$("#active").attr("disabled", "disabled");
}
});
});
</script>
</head>
<body>
<form id='usr' method='post' action='test.php'>
<table border='1' width='60%'>
<tr>
<th>Val1</th>
<th>Val2</th>
<th>Val3</th>
<th>Val4</th>
<th>Val5</th>
<th>Val6</th>
</tr>
<tr align='center'>
<td>
<select name='option' id='option' />
<option></option>
<option value='1'>Option1</option>
<option value='2'>Option2</option>
</select>
</td>
<td>USR1</td>
<td><input type='text' name='name[]' id='name' value='' disabled='disabled'/></td>
<td><input type='text' name='id[]' id='id' value='' disabled='disabled'/></td>
<td>
<select name='home[]' id='home' disabled='disabled'/>
<option value='North'>North</option>
<option value='South'>South</option>
<option value='Other'>Other</option>
</select>
</td>
<td>
<select name='active[]' id='active' disabled='disabled'/>
<option value=''></option>
<option value='1'>Yes</option>
<option value='2'>No</option>
<option value='3'>Dead</option>
<option value='4'>Other</option>
</select>
</td>
</tr>
<tr align='center'>
<td>
<select name='option' id='option' />
<option></option>
<option value='1'>Option1</option>
<option value='2'>Option2</option>
</select>
</td>
<td>USR2</td>
<td><input type='text' name='name[]' id='name' value='' disabled='disabled'/></td>
<td><input type='text' name='id[]' id='id' value='' disabled='disabled'/></td>
<td>
<select name='home[]' id='home' disabled='disabled'/>
<option value='North'>North</option>
<option value='South'>South</option>
<option value='Other'>Other</option>
</select>
</td>
<td>
<select name='active[]' id='active' disabled='disabled'/>
<option value=''></option>
<option value='1' >Yes</option>
<option value='2' >No</option>
<option value='3' >Dead</option>
<option value='4'>Other</option>
</select>
</td>
</tr>
</table>
</form>
</body>
</html>
有人可以帮助我让所有行都能正常工作。在行的开头选择下拉列表时,它应仅影响该行。
答案 0 :(得分:1)
好的,首先你要class
而不是id
,因为id
。我用工作示例构建了Fiddle:http://jsfiddle.net/9EfvS/
以下是代码:
12 adn 314是有条件的并且意味着输入唯一ID(更好地使用它而不仅仅是行计数1,2,3等...)因为在发布到服务器以与数据库条目进行比较后更容易
$(document).ready(function () {
$('.blah').change(function () {
var parentTR = $(this).parents('tr');
if ($(this).val() == "2") {
$(parentTR).find(".name").removeAttr("disabled");
$(parentTR).find(".id").removeAttr("disabled");
$(parentTR).find(".home").removeAttr("disabled");
$(parentTR).find(".active").removeAttr("disabled");
}
if ($(this).val() != "2") {
$(parentTR).find(".name").attr("disabled", "disabled");
$(parentTR).find(".id").attr("disabled", "disabled");
$(parentTR).find(".home").attr("disabled", "disabled");
$(parentTR).find(".active").attr("disabled", "disabled");
}
});
});
<form id='usr' method='post' action='test.php'>
<table border='1' width='60%'>
<tr>
<th>Val1</th>
<th>Val2</th>
<th>Val3</th>
<th>Val4</th>
<th>Val5</th>
<th>Val6</th>
</tr>
<tr align='center'>
<td>
<select name='option[12]' id='option12' class='blah' />
<option></option>
<option value='1'>Option1</option>
<option value='2'>Option2</option>
</select>
</td>
<td>USR1</td>
<td>
<input type='text' name='name[12]' class='name' value='' disabled='disabled' />
</td>
<td>
<input type='text' name='id[12]' class='id' value='' disabled='disabled' />
</td>
<td>
<select name='home[12]' class='home' disabled='disabled' />
<option value='North'>North</option>
<option value='South'>South</option>
<option value='Other'>Other</option>
</select>
</td>
<td>
<select name='active[12]' class='active' disabled='disabled' />
<option value=''></option>
<option value='1'>Yes</option>
<option value='2'>No</option>
<option value='3'>Dead</option>
<option value='4'>Other</option>
</select>
</td>
</tr>
<tr align='center'>
<td>
<select name='option[314]' id='option314' class='blah' />
<option></option>
<option value='1'>Option1</option>
<option value='2'>Option2</option>
</select>
</td>
<td>USR1</td>
<td>
<input type='text' name='name[314]' class='name' value='' disabled='disabled' />
</td>
<td>
<input type='text' name='id[314]' class='id' value='' disabled='disabled' />
</td>
<td>
<select name='home[314]' class='home' disabled='disabled' />
<option value='North'>North</option>
<option value='South'>South</option>
<option value='Other'>Other</option>
</select>
</td>
<td>
<select name='active[314]' class='active' disabled='disabled' />
<option value=''></option>
<option value='1'>Yes</option>
<option value='2'>No</option>
<option value='3'>Dead</option>
<option value='4'>Other</option>
</select>
</td>
</tr>
</form>
答案 1 :(得分:0)
<强>排序。强>
使用类更改并获取行标识,然后将其添加到用于添加或删除禁用的id查找中。
每个id ='name',id ='id'正在从数据库中更新,因此它们现在显示为name1, id1, name2, id2.
感谢 George 提及Class。
以下示例..
<html>
<head>
<title>test</title>
<script src="jquery-1.8.0.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$('.option').change(function(){
var id = $(this).closest('td').parent()[0].sectionRowIndex;
if($(this).val()=="2"){
$("#name"+id).removeAttr("disabled");
$("#id"+id).removeAttr("disabled");
$("#home"+id).removeAttr("disabled");
$("#active"+id).removeAttr("disabled");
}
if($(this).val()!="2"){
$("#name"+id).attr("disabled", "disabled");
$("#id"+id).attr("disabled", "disabled");
$("#home"+id).attr("disabled", "disabled");
$("#active"+id).attr("disabled", "disabled");
}
});
});
</script>
</head>
<body>
<form id='usr' method='post' action='test.php' ><table border='1' width='60%'><tr><th>Val1</th><th>Val2</th><th>Val3</th><th>Val4</th><th>Val5</th><th>Val6</th></tr>
<tr align='center'>
<td><select name='option' class='option' /><option></option><option value='1'>Option1</option><option value='2'>Option2</option></select></td>
<td>USR1</td>
<td><input type='text' name='name[]' id='name1' value='' disabled='disabled'/></td>
<td><input type='text' name='id[]' id='id1' value='' disabled='disabled'/></td>
<td><select name='home[]' id='home1' disabled='disabled'/><option value='North'>North</option><option value='South'>South</option><option value='Other'>Other</option></select></td>
<td><select name='active[]' id='active1' disabled='disabled'/><option value=''></option><option value='1' >Yes</option><option value='2' >No</option><option value='3' >Dead</option><option value='4'>Other</option></select></td>
</tr>
<tr align='center'>
<td><select name='option' class='option' /><option></option><option value='1'>Option1</option><option value='2'>Option2</option></select></td>
<td>USR2</td>
<td><input type='text' name='name[]' id='name2' value='' disabled='disabled'/></td>
<td><input type='text' name='id[]' id='id2' value='' disabled='disabled'/></td>
<td><select name='home[]' id='home2' disabled='disabled'/><option value='North'>North</option><option value='South'>South</option><option value='Other'>Other</option></select></td>
<td><select name='active[]' id='active2' disabled='disabled'/><option value=''></option><option value='1' >Yes</option><option value='2' >No</option><option value='3' >Dead</option><option value='4'>Other</option></select></td>
</tr>
</form></body>
</html>