我有一个带有一列文本框(里程数)的html表,所有这些都在页面加载时被禁用,我需要当用户点击一个复选框时,该列的文本框应该被启用并成为必需的字段,然后如果用户取消选中该复选框,则必须禁用该行上的文本框并删除所需的类.
当用户点击相应的复选框时,我已经具有启用和禁用文本框(列里程)的功能,但它是用javascript编写的.但是,由于某种原因它只适用于IE).
这是HTML代码
- <tbody>
- <c:forEach items="${list}" var="item">
- <tr>
- <td align="center">
- <input type="checkBox" name="selectItems" value="<c:out value="${item.numberPlate}"/>" onchange="enableTextField(this)" />
- </td>
- <td align="left"><c:out value="${item.numberPlate}"/></td>
- <td align="left"><c:out value="${item.driver.fullName}"/></td>
- <td align="left"><input type="text" name="mileage_<c:out value="${item.numberPlate}"/>" value="" disabled="true"/></td>
- </tr>
- </c:forEach>
- </tbody>
和javascript代码:
- function enableTextField(r)
- { var node = r.parentNode;
- while( node && node.tagName !== 'TR' ) {
- node = node.parentNode;
- }
- var i=node.rowIndex;
- if(document.form1.selectItems[i-1].checked)
- {
- document.getElementById('mileage_' + document.form1.selectItems[i-1].value).disabled=false;
- }
- else
- {
- document.getElementById('mileage_' + document.form1.selectItems[i-1].value).value="";
- document.getElementById('mileage_' + document.form1.selectItems[i-1].value).disabled=true;
- }
- }
现在,我知道为了添加或删除动态验证规则,我必须使用:addClass(‘required’); o removeClass(‘required’),但我不知道如何检测是否选中了复选框,并基于此,启用或禁用该行的文本框.
我真的希望你能帮我解决这个问题.
解决方法
把它放在< head>中或者在< head>中包含的.js文件中.
- $(document).ready(function() {
- $("input[name=selectItems]").change(function() {
- $(this).closest("tr").find("input[name^=mileage]").attr("disabled",!this.checked);
- });
- });