我使用 JQuery,我有一个网页,其中列出了多行,每行带有单选按钮和文本框。当我连续单击单选按钮时,我正在尝试启用文本框。我所期待的是 - 它应该只在该行中启用/禁用文本框。它不应该启用/禁用其他行中的文本框。
默认情况下,每行中的所有文本框在页面加载时都被禁用。我进行了研究,并且能够获得一个解决方案来启用一个文本框,当我单击一个单选按钮时。现在,当我选择另一个单选按钮时,我希望之前启用的文本框应该再次被禁用,并且当前行中的文本框现在应该被启用。这就是我想要达到的目标。
我做了很多研究,大多数答案都不符合要求。请帮助。我使用 JQuery,我也尝试使用 Jquery 和 javascripts 获得解决方案。
这是代码:
<div class="content">
<form name="selectedMatIds" action="@{addMaterialsToBuffer()}" method="POST">
<div class="separator" style="margin-top:30px"><h4>Materials found</h4></div>
<table class="table MaterialTable" id="makeZebras">
<thead>
<tr>
<th class="alignLeft first">
Code
</th>
<th class="alignLeft">
Measure
</th>
<th class="alignLeft">
Unit
</th>
<th class="alignLeft">
New Unit
</th>
</tr>
</thead>
<tbody>
#{list items:foundList, as:'mat' }
<tr>
<td>
<input type="radio" name="selectedMatIds" id="selectedMatIds" value="${mat.id}" onclick="getMaterialID()"> ${mat.materialCode}
</td>
<td>
${mat.bum}
</td>
<td>
${mat.iumPerBum}
</td>
<td>
<div id="group">
<input type="text" id="newIUM" name="${mat.id}" value="${newIUM}" disabled>
<input type="hidden" id="oldIUM" name="oldIUM" value="${mat.iumPerBum}">
<input type="hidden" id="bum" name="bum" value="${mat.bum}">
<a id="save" onclick="loadURL1()">Save</a> <a>Cancel</a>
</div>
</td>
</tr>
#{/list}
</tbody>
<div class="actions">
<input type="submit" class="primary" value="Continue">
</div>
</table>
现在,Jquery 脚本:
$("input:radio[name='selectedMatIds']").click(function() {
var isDisabled = $(this).is(":checked");
var value = $(this).val();
var textValue = $("#newIUM").val();
alert(isDisabled);
alert(value);
alert(textValue);
if(isDisabled) $("#newIUM").removeAttr("disabled");
else $("#newIUM").attr("disabled", isDisabled);
});