2017-12-01 22 views
0

私の目標は、DELETEおよびEDITボタンを含むテーブルにデータを追加するプログラムを作成することです。私はすでに新しいデータ/行を追加し、行を削除するためのコードを作成しました。私の問題は、テーブルのデータ/行を編集する方法に関するコードを理解することができないことです。ここに私のコードだ:jQueryを使用して行データを編集する方法

$(document).ready(function(){ 
 
     $(".add-row").click(function(){ 
 
      var id = $("#id").val(); 
 
      var name = $("#name").val(); 
 
      var gender = $("#gender").val(); 
 
      var markup = "<tr><td><input type='checkbox' name='record'></td><td>" + id + "</td><td>" + name + "</td><td>" + gender + "</td></tr>"; 
 
     $("table tbody").append(markup); 
 
    }); 
 

 
    // Find and remove selected table rows 
 
    $(".delete-row").click(function(){ 
 
     $("table tbody").find('input[name="record"]').each(function(){ 
 
      if($(this).is(":checked")){ 
 
       $(this).parents("tr").remove(); 
 
      } 
 
     }); 
 

 
    $(".edit-row").click(function(){ 
 
      if($(this).is(":checked")){ 
 
       $(this).html('<input type="text" value="' + $(this).html() + '"/>'); 
 
     }; 
 
     }); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<!DOCTYPE html> 
 
<html lang="en"> 
 
<head> 
 
<meta charset="utf-8"> 
 
<title>jQuery Form</title> 
 
<link rel="stylesheet" type="text/css" href="css/jstyle.css"> 
 
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script> 
 
<script src="js/script.js"></script> 
 
</head> 
 
<body> 
 
<form> 
 
    <input type="text" id="id" placeholder="ID Number"> 
 
    <input type="text" id="name" placeholder="Name"> 
 
    <label>Gender: 
 
     <select id="gender"> 
 
      <option value="Male">Male</option> 
 
      <option value="Female">Female</option> 
 
     </select> 
 
    </label> 
 
    <input type="button" class="add-row" value="Add Row"> 
 
</form> 
 
<table> 
 
    <thead> 
 
     <tr> 
 
      <th>Select</th> 
 
      <th>ID Number</th> 
 
      <th>Name</th> 
 
      <th>Gender</th> 
 
     </tr> 
 
    </thead> 
 
    <tbody> 
 
     <tr hidden> 
 
      <td><input type="checkbox" name="record"></td> 
 
      <td></td> 
 
      <td></td> 
 
      <td></td> 
 
     </tr> 
 
    </tbody> 
 
</table> 
 
<button type="button" class="delete-row">Delete Row</button> 
 
<button type="button" class="edit-row">Edit Row</button> 
 
</body> 
 
</html>

は、事前にありがとうございます!

+0

編集ボタンは、通常、各行に配置されています。次に、イベントハンドラでは、ボタンからのトラバースを使用して現在の行にアクセスします – charlietfl

+0

これはコードのいくつかの短い行ではありません.JavaScript/jQueryを使用した編集可能な表のチュートリアルがたくさんあり、軽量なプラグインがたくさんあります。それらを見て、いくつかのチュートリアルに従ってみてください。試しに試してみてください。私たちはあなたのためにそれを書くことはできません。 – ProEvilz

答えて

0

答えはお使いのUIによって異なります。コメントに指摘されているように、各行に編集ボタンがある方がいいかもしれません。

現在のUIに固執すると仮定すると、編集ハンドラは選択した各行をフォームにある同じマークアップに置き換えます。フォームのフィールドにその行のデータをあらかじめ入力します。

$(".edit-row").click(function() { 
    $("tr").not('[hidden]').each(function(index, element) { 
     //element is the TR 
     //Check to see if it's selected 
     //Proceed with the inline replacement 
    }); 
}); 

を明らかに、あなたはまた、そのようどこかに「保存」または「OK」ボタンを追加する必要があります。

あなたがそのために使用する必要がセレクタを使用すると、上記の持っているものという少し異なっていますユーザーがすべての編集を完了すると、編集内容を保存することができます。

+0

動的に追加されるため、このセレクタが機能しない可能性があります。 – ProEvilz

+0

@ ProEvilz - それは動作するはずです。コールバック関数内のセレクタは、コールバックが起動されるまで実行されません。その時点で、TRはすでにDOMに追加されているため、セレクタはそれらを検索します。 – Rolandus

0

ユーザーが値を直接編集できるように、TDを入力に変更することができます。値を取得して操作する関数をアタッチします。

テンプレートは次のようになります。

$(document).ready(function(){ 
    $(".add-row").click(function(){ 
     var id = $("#id").val(); 
     var name = $("#name").val(); 
     var gender = $("#gender").val(); 
     var markup = "<tr onclick='editFunc(this);'><td><input class='id' type='checkbox' name='record'></td><td>" + id + "</td><td><input class='name' type='text' value='" + name + "'></td><td><input type='text' value='" + gender + "'></td></tr>"; 
    $("table tbody").append(markup); 
}); 

そして、このような関数:

editFunc = function(e){ 
    console.log($(e).find('.id').val()); 
    console.log($(e).find('.name').val()); 
    //Do something else with the values 
} 
0

を簡単な方法は、各TD値およびすべての値の後ろに入力テキストを作成しているが場合に、表示noneですユーザーが編集ボタンをクリックすると、すべてのtd値が表示されず、すべてのテキストボックスの値がブロックを表示し、ボタンを編集する属性をonclick = 'updaterow()'に設定し、この関数に適切なパラメータを設定し、更新はすべての入力テキストを元の状態に戻します。新しい値に従って1つおよびすべてのtd値が設定されます。

私の英語はよくないですが、意味があるといいですね。

関連する問題