当用户从所选行中单击编辑按钮时,我想删除表中文本字段的disabled属性,但我不知道如何过滤我想要更改的文本字段。
这是我的php:
$query_select = "SELECT `users_id`,`users_studno`,`users_fname`,`users_lname`,`users_email`,`users_password` FROM `tbl_usersinfo` LIMIT 20";
if($run_query = mysqli_query($con,$query_select))
{
while($row = mysqli_fetch_assoc($run_query))
{
$id_val = htmlentities($row['users_id']);
$studno_val = htmlentities($row['users_studno']);
$fname_val = htmlentities($row['users_fname']);
$lname_val = htmlentities($row['users_lname']);
$email_val = htmlentities($row['users_email']);
$password_val = htmlentities($row['users_password']);
echo "<tr class = 'special_rows'>";
echo "<td>"."<input type = 'checkbox' value = 'id_val' style = 'cursor:pointer; '>"."</td>";
echo "<td>".$id_val."</td>";
echo "<td>"."<input type = 'text' value = '$studno_val' class = 'data_field' disabled>"."</td>";
echo "<td>"."<input type = 'text' value = '$fname_val' class = 'data_field' disabled>"."</td>";
echo "<td>"."<input type = 'text' value = '$lname_val' class = 'data_field' disabled>"."</td>";
echo "<td>"."<input type = 'text' value = '$email_val' class = 'data_field' disabled>"."</td>";
echo "<td>"."<input type = 'text' value = '$password_val' class = 'data_field' disabled>"."</td>";
echo "<td>"."<a style = 'cursor:pointer' class = 'edit'>edit</a> <a style = 'cursor:pointer' class = 'save'>delete</a>"."</td>";
echo "</tr>";
}
}
这是我的jquery:
var edit = 0;
var save = false;
$('.edit').click(function()
{
if( edit %2 == 0)
{
$('#tbl_users').find('tr').click( function(){
alert('You clicked row '+ ($(this).index()) );
$(this).index().$('.data_field').removeAttr('disabled');
});
$(this).text('save');
}
else
{
$(this).text('edit');
}
edit++;
});
例如: 我点击了第一行的编辑按钮,所有第一行文本字段都应删除所有已禁用的属性。
答案 0 :(得分:1)
您的代码可能无法正常工作,因为您正在使用已禁用的removeAttr,这是您永远不应该做的。相反,请使用prop()
函数。
根据jQuery API Documentation,应始终使用道具来设置禁用。
属性通常会影响DOM元素的动态状态,而不会更改序列化的HTML属性。示例包括输入元素的value属性,输入和按钮的disabled属性或复选框的checked属性。应该使用.prop()方法来设置disabled和checked而不是.attr()方法。应该使用.val()方法来获取和设置值。
另外,我不确定这里到底发生了什么:
$(this).index().$('.data_field').removeAttr("disabled");
相反,试试这个:
$('.edit').click(function() {
$(this).closest("tr").children(".data_field").prop('disabled', false);
});
答案 1 :(得分:1)
你可以试试这个:
$('.data_field', this).prop('disabled', false);
而不是:
$(this).index().$('.data_field').removeAttr('disabled');