私は英語があまり得意ではないので、十分に理解できないかもしれませんが、あなたがやりたいことをするために、私は次のようにします:
まず最初に、HTML コードを改善する必要があります。これにより、仕事がずっと簡単になります。
ユーザーテーブルで:
<table> </table>
: を追加しid
て、jQuery でより簡単に処理できるようにします :$('#id')
メソッド
元:<table id="users"></table>
元:<tr id="name_01"><td>...</td></tr>
<td> </td>
class
:姓と名がどこにあるかを知るための属性を追加します
元:<td class="firstname">...</td><td class="lastname"></td>
あなたのフォームで:
<form> </form>
: を追加しid
て、より簡単につかむこともできます
元:<form id="usersform"></form>
元:<label for="firstname" >FirtsName</label>
これで、テーブルは次のようになります。
<table id="users">
<thead>
<tr>
<th>Firstname</th><th>Last Name</th>
</tr>
</thead>
<tbody>
<tr id="name_01">
<td class="firstname">Jill</td><td class="lastname">Smith</td>
</tr>
<tr id="name_02">
<td class="firstname">Eve</td><td class="lastname">Jackson</td>
</tr>
</tbody>
</table>
あなたが望むものを作るにはいくつかの方法がありますが、基本的には2つの主な方法があります:
- 一度にフォーム内のテーブル エントリを 1 つだけ持つ
- すべてのテーブル エントリがある
I - 一度に 1 つのテーブル エントリのみ
HTML
<form id="usersform" name="usersedit" >
<table id="users">
<tr>
<td><label for="firstname" >FirtsName</label></td>
<td><input type="text" id="firstname" class="medium"></td>
</tr>
<tr>
<td><label for="lastname" >LastName</label></td>
<td><input type="text" id="lastname" class="medium"></td>
</tr>
</table>
</form>
jQuery :
//When there is a click on a line of the table
$('#users tbody tr').click(function(e) {
//Get the <tr> id
userid = $(this).attr('id');
//Put the value of the firstname cell in the firstname input
$('#usersform input#firstname').val($(this).find('td.firstname').html());
//You can add a name attribute or an id for later works
$('#usersform input#firstname').attr('name','first'+userid);
//Now for the lastname input
$('#usersform input#lastname').val($(this).find('td.lastname').html()).attr('name','first'+userid);
}
II - すべてのテーブル エントリ
HTML
<form id="usersform" name="usersedit" >
<table id="users">
<thead>
<tr>
<th>Firstname</th><th>Last Name</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</form>
jQuery :
//When there is a click on the table (#users) :
$.('#users').click(function(e){
//handle the part of the form where we want to add input field
myformtable = $('#userform table tbody');
//For each row in the table
$.('#users tbody tr').each(function(e) {
//Create and append a new line
userline = $(document.createElement('tr'));
userline.appendTo(myformtable);
//Create and append a firstname cell
tdfirstname = $(document.createElement('td')).addClass('firstname');
tdfirstname.appendTo(userline);
//Create and append a firstname input
firstname = $(document.createElement('input')).addClass('medium');
firstname.appendTo(tdfirstname);
//Add attribute
firstname.attr({type: 'text', name: 'first'+$(this).attr('id')});
//Set value
firstname.val($(this).find('.firstname').html());
//Same things with the lastname
tdlastname = $(document.createElement('td')).addClass('lastname');
tdfirstname.after(tdlastname);
lastname = $(document.createElement('input')).addClass('medium');
lastname.appendTo(tdlastname);
lastname.attr({type: 'text', name: 'last'+$(this).attr('id')});
lastname.val($(this).find('.lastname').html());
}
}
ループで改善したり、css 疑似クラスを使って表のセルやフォームの入力を処理したりできますが、こちらの方が分かりやすいと思いました。