更改行jquery中元素的属性

时间:2014-09-28 11:23:53

标签: php jquery

当用户从所选行中单击编辑按钮时,我想删除表中文本字段的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++;
});

例如: 我点击了第一行的编辑按钮,所有第一行文本字段都应删除所有已禁用的属性。

2 个答案:

答案 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');