2014-09-28 226 views
0

我想刪除表中文本字段的禁用屬性,當用戶從所選行中單擊編輯按鈕,但我不知道如何過濾文本字段我想改變。更改行jquery中元素的屬性

這裏是我的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

爲什麼在HTML輸出中屬性和它們各自的屬性值之間有空格? – Svenskunganka 2014-09-28 11:31:27

+0

我無法理解你的問題。 – 2014-09-28 11:42:59

+0

這個''應該是''。這是很好的做法。 – Svenskunganka 2014-09-28 11:44:26

回答

1

你可以試試這個:

$('.data_field', this).prop('disabled', false); 

而不是:

$(this).index().$('.data_field').removeAttr('disabled'); 
+0

謝謝兄弟,它的作品。 – 2014-09-28 11:51:27

1

您的代碼可能無法正常工作,因爲您使用的是禁用的removeAttr,您應該永遠不要這樣做。相反,請使用prop()函數。

根據jQuery API Documentation,prop應始終用於設置禁用。

屬性通常會影響DOM元素的動態狀態,而不會更改序列化的HTML屬性。示例包括輸入元素的值屬性,輸入和按鈕的禁用屬性或複選框的選中屬性。 .prop()方法應該用於設置禁用和檢查,而不是.attr()方法。 .val()方法應該用於獲取和設置值。

而且,我不知道什麼是怎麼回事:

$(this).index().$('.data_field').removeAttr("disabled"); 

相反,試試這個:

$('.edit').click(function() { 
    $(this).closest("tr").children(".data_field").prop('disabled', false); 
}); 
+0

這不是工作的先生。 – 2014-09-28 11:39:50

+0

@monkeycoder對不起,我應該仔細看看。 click()函數綁定一個新事件。因此,find('tr')。click(function ...將一個新的點擊事件綁定到tr。我更新了我的答案,以便爲您提供更好的功能(當然,添加編輯%2的東西或任何其他內容,但你得到的想法) – 2014-09-28 11:42:39

+0

仍然無法正常工作,我試過這段代碼:$('。data_field',this).prop('disabled',false);並且正常工作。 – 2014-09-28 11:50:36