如何在特定行中启用文本框
How to enable textbox in a particular row?
我正在尝试通过单击相应的按钮来启用文本框,但我单击任何按钮它总是启用第一个文本框,我不想在这里使用"id"
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
$("table tr").click(function()
{
//alert( this.rowIndex );
$('#button1').prop('disabled', false);
});
});
</script>
</head>
<table>
<tr>
<td> <input type="text" name="test" id="button1" disabled value="Edit"/> </td>
<td> <input type="button" name="test" value="Edit"/> </td>
</tr>
<tr>
<td> <input type="text" name="test" disabled value="Edit"/> </td>
<td> <input type="button" name="test" value="Edit"/> </td>
</tr>
<tr>
<td> <input type="text" name="test" disabled value="Edit"/> </td>
<td> <input type="button" name="test" value="Edit"/> </td>
</tr>
</table>
</html>
有什么方法可以使用row index
功能吗?
您可以在不使用 ID 的情况下执行此操作。逻辑是访问按钮的父级,然后访问其前一个元素,然后在其中查找文本输入元素。
工作代码片段:
$(document).ready(function() {
$("input[type=button]").click(function(){
console.log("editing");
$(this).parent().prev().find("input[type=text]").attr('disabled', false);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<td> <input type="text" name="test" id="button1" disabled value="Edit"/> </td>
<td> <input type="button" name="test" value="Edit"/> </td>
</tr>
<tr>
<td> <input type="text" name="test" disabled value="Edit"/> </td>
<td> <input type="button" name="test" value="Edit"/> </td>
</tr>
<tr>
<td> <input type="text" name="test" disabled value="Edit"/> </td>
<td> <input type="button" name="test" value="Edit"/> </td>
</tr>
</table>
首先,使用标签类型或类来标识行中的input
元素。对你试图保持 DRY 的代码使用id
是违反直觉的。
<table>
<tr>
<td>
<input type="text" name="test" disabled="true" value="Edit" />
</td>
<td>
<input type="button" name="test" value="Edit" />
</td>
</tr>
<!-- Repeated HTML... -->
</table>
然后,您可以使用上下文选择器仅在单击的tr
中查找input
元素:
$("table tr").click(function () {
$('input', this).prop('disabled', false);
});
示例小提琴
将代码更改为:
$(document).ready(function()
{
$("table tr").click(function()
{
//alert( this.rowIndex );
$(this).find("input[type=text]").prop('disabled', false);
});
});
它始终启用第一个文本框,因为您正在更改 button1 上始终禁用属性的值。您可以为每个输入按钮使用 onclick 属性,并添加例如以下代码:
var current_tr = $(this).parent();
var editable_input = current_tr.children(':first').prop('disabled', false);
因此,每个输入按钮都变为:
<td> <input type="button" name="test" value="Edit" onclick="var current_tr = $(this).parent(); current_tr.children(':first').prop('disabled', false);" /> </td>
您可以使用它:
$("table tr td input[type='button']").click(function() {
$(this).closest('tr').find('td').first().find('input[type="text"]').prop('disabled', false);
});
相关文章:
- 使用javascript Without Ajax/Jquery在特定行中启用文本框
- 单击每个表格行中的复选框时启用文本框
- 禁用基于下拉列表选择 asp.net JavaScript 启用文本框
- 根据下拉列表中的选定值启用文本框
- 重新启用文本选择(Opera、webkit等)
- 根据输入启用文本框
- 通过JS功能在中继器中启用文本框
- 启用文本框选中复选框数组
- 如何在特定行中启用文本框
- 单选按钮未启用文本框
- 启用文本输入
- 与disableSelection功能相反,后者用于为特定HTML元素启用文本选择
- ASP.NET MVC Checboxes禁用/启用文本框
- 无法使用mootools启用文本框
- 当下拉框中的值被选中时,启用文本框
- 选中单选按钮导致在asp.net中启用文本框
- 如何在ChromeOS应用程序窗口中启用文本选择
- 禁用/启用文本框,单击单选按钮
- 使用javascript启用文本框
- 启用文本选择javascript