我正在尝试编辑表格中的一行(数据网格)。 问题是:我没有更新点击的行,而是创建了一个新行。 我想要的是更新我在模态窗口中单击的行,我无法实现...似乎我错过了我的函数对应的那一行的表示当我按下“save-btn”时,到模态窗口?
以下是文件:http://jsbin.com/iyubox/2/
HTML:
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery.min.js"></script>
<link href="http://twitter.github.io/bootstrap/assets/css/bootstrap.css" rel="stylesheet" type="text/css" />
<link href="http://twitter.github.io/bootstrap/assets/css/bootstrap-responsive.css" rel="stylesheet" type="text/css" />
<script src="http://twitter.github.io/bootstrap/assets/js/bootstrap.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body>
<table id="main-table" class="table">
<thead>
<tr class="box_round">
<td>Date</td>
<td>Entry</td>
<td>Invoice</td>
<td>text</td>
</tr>
</thead>
<tbody>
<tr>
<td><a class="inData" href="">17.17.17</a></td>
<td><a class="inData" href="">50123</a></td>
<td><a class="inData" href="">Invoice</a></td>
<td><a class="inData" href="">Hola señor</a></td>
<td><a class="deleteItem" href="#"><i class="icon-trash"></i></a></td>
<td><a href="#secondModal" role="" class="edit" data-toggle="modal"><i class="icon-edit"></i></a></td>
</tr>
<!--
*************************************************************************
<!--
*************************************************************************
-->
<div id="secondModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" >
<div class="modal-header">
<button style="position: relative; left: 27px; top: -23px; opacity: 1" type="button" class="close" data-dismiss="modal" aria-hidden="true"><img src="gfx/btn-close-popup.png" alt=""/></button>
<h3 id="myModalLabel">Day book</h3>
</div>
<div class="modal-body">
<div class="FormItems">
<ul>
<div class="box">
<ul>
<li class="innerBox innerFloat"><p>Type</p><input class="in-type input-small" type="text" >
</li>
<li class="innerBox innerFloat"><p>Entry</p><input class="in-entry input-small" type="text" >
</li>
<li class="innerBox"><p>Date</p>
<input class="in-calender input-small datepicker" type="text" style="">
</li>
</ul>
</div>
<div class="box">
<ul>
<li class="innerBox"><p>Text</p><input id=".text" class="in-text input-medium" type="text"/></li>
</ul>
</div>
</ul>
</div>
</div>
<div class="modal-footer">
<button class="btn real" data-dismiss="modal" aria-hidden="true">Close</button>
<button class="btn btn-primary">Save changes</button>
</div>
</div>
</body>
</html>
JQUERY
function deleteItem(){
$(this).parent().parent().remove();
console.log('working');
}
$('#main-table').on('click', '.deleteItem', deleteItem);
$('#main-table').on('click', '.edit', function(){
var entry, calender, amount, text, currency, account_no, invoice, contra_account;
var row = $(this).parents('tr');
var getData_obj = {
calender : $('#main-table .inData:eq(0)').text(),
entry : $('#main-table .inData:eq(1)').text(),
text : $('#main-table .inData:eq(3)').text(),
amount : $('#main-table .inData:eq(4)').text(),
account_no : $('#main-table .inData:eq(5)').text(),
contra_account : $('#main-table .inData:eq(6)').text(),
currency : $('#main-table .inData:eq(7)').text()
}
$('#secondModal .in-calender').val(getData_obj.calender);
$('#secondModal .in-entry').val(getData_obj.entry);
$('#secondModal .in-text').val(getData_obj.text);
$('#secondModal .btn-primary').on('click', function(){
var secondData_obj = {
calender : $('#secondModal .in-calender').val(),
entry : $('#secondModal .in-entry').val(),
val :$('#secondModal .in-val').val(),
text: $('#secondModal .in-text').val()
}
$('#main-table tbody').append(
'<tr>' +
'<td><a class="inData" href="">'+secondData_obj.calender+'</a></td>'+
'<td><a class="inData" href="">'+secondData_obj.entry+'</a></td>' +
'<td><a class="inData" href="">'+secondData_obj.invoice+'</a>' +
'<td><a class="inData" href="">'+secondData_obj.text+'</a>' +
'<td><a class="deleteItem" href="#"><i class="icon-trash"></i></a></td>'+
'<td><a href="#secondModal" role="" class="" data-toggle="modal"><i class="icon-edit"></i></a></td>'+
'</tr>'
);
});
}
);
答案 0 :(得分:0)
您使用的是append
,只是在表格中添加了新的tr
标记。您需要找到一种方法来选择您要编辑的确切tr
标记,删除其内容,然后附加新信息。
如果您更换此代码,请查看您的代码......
$('#main-table tbody').append(
'<tr>' +
'<td><a class="inData" href="">'+secondData_obj.calender+'</a></td>'+
'<td><a class="inData" href="">'+secondData_obj.entry+'</a></td>' +
'<td><a class="inData" href="">'+secondData_obj.invoice+'</a>' +
'<td><a class="inData" href="">'+secondData_obj.text+'</a>' +
'<td><a class="deleteItem" href="#"><i class="icon-trash"></i></a></td>'+
'<td><a href="#secondModal" role="" class="" data-toggle="modal"><i class="icon-edit"></i></a></td>'+
'</tr>'
);
有了......
var tableBody = document.getElementById('main-table').getElementsByTagName('tbody');
var tableRow = tableBody[0].getElementsByTagName('tr');
tableRow[0].innerHTML = '<td><a class="inData" href="">'+secondData_obj.calender+'</a></td>'+
'<td><a class="inData" href="">'+secondData_obj.entry+'</a></td>' +
'<td><a class="inData" href="">'+secondData_obj.invoice+'</a>' +
'<td><a class="inData" href="">'+secondData_obj.text+'</a>' +
'<td><a class="deleteItem" href="#"><i class="icon-trash"></i></a> </td>'+'<td><a href="#secondModal" role="" class="" data-toggle="modal"><i class="icon-edit"></i></a></td>';
您将编辑该行而不是添加新行,但这不是一个完美的解决方案。当您单击编辑图标以使其正常工作时,您仍然需要一种方法来标识要编辑的行。
希望这有帮助。
答案 1 :(得分:0)
我提出了一个不使用ID的解决方案,但它并不是最好的解决方案,对于下一个解决方案,我将使用JSON和我认为的整个对象。
如果您需要与您正在做的类似的事情需要帮助,请查看此文件: http://jsbin.com/onacow/1/
OBS:这不是相同的HTML(保存了一段时间),但想法是一样的。