我有一个表格,其数据是从数据库中提取的,而且该表格的每个标识也是动态唯一的(td' id值等于数据库&#39 ; s表值)。在每个td中,当任何人双击它时,会出现一个输入字段,当用户编辑输入字段时,我已经进行了Ajax调用(使用onblur),并更新了数据库中的这个td' s字段。哪个会工作我想,现在我想改变td的id值,它将来自数据库(Ajax调用)。
例如::
我的表格代码::
<td id="2*Name>Engr._C.F._Zaman" class=" "> Engr. C.F. Zaman </td>
此
当任何人点击这个td时,他/她将得到一个输入字段,就像下面给出的那样::
<td id="2*Name>Engr._C.F._Zaman" class=" ">
<input type="text" class="form-control" id="sabbir" value="Engr._C.F._Zaman" name="Name" onblur="AjaxChange('2', 'Name', 'Engr._C.F._Zaman', '2*Name>Engr._C.F._Zaman');">
</td>
这是使用jquery onclick 事件生成的。
现在,如果上述输入字段发生任何更改,则调用 AjaxChange 。我的AjaxChange代码是::
function AjaxChange( id, Attr, tdValue, td ) {
$.ajax({
url: "ajax_call.php", // this is just update the db
type: "POST",
data: { table: "life", id=id, name=Attr, value=tdValue }, //
dataType: "html",
done: function(data) {
// first I want to change the id of td, which value will be data
// td's id format is id*Attr>data
// next show data in the td with out input field
// <td id="id*Attr>data"> data </td>
}
});
}
现在如何更改此td的 id 属性?
答案 0 :(得分:2)
立即解决问题。
<td id="2*Name>Engr._C.F._Zaman" class=" ">
<input type="text" class="form-control" id="sabbir"
value="Engr._C.F._Zaman"
name="Name"
onblur="AjaxChange('2', 'Name', 'Engr._C.F._Zaman', '2*Name>Engr._C.F._Zaman', this);">
</td>
脚本功能
function AjaxChange( id, Attr, tdValue, td, element ) {
$.ajax({
url: "ajax_call.php", // this is just update the db
type: "POST",
data: { table: "life", id=id, name=Attr, value=tdValue }, //
dataType: "html",
done: function(data) {
//Set ID
$(element).closest("td").prop('id', YourNewID)
}
});
}
但是,我强烈建议您重构代码并使用 data - * 属性。继承人的例子
HTML 的
<td class="" data-value="2*Name>Engr._C.F._Zaman" data-id="2" data-attr="Name" data-name="Engr._C.F._Zaman" >
<input type="text" class="form-control name-txt"
value="Engr._C.F._Zaman"
name="Name">
</td>
的JavaScript
$('.name-txt').on('blur', function(){
var self = $(this);
var cell = self.closest("td");
var id = cell.data('id');
var Attr= cell.data('Attr');
var name= cell.data('name');
var tdValue = cell.data('value');
$.ajax({
url: "ajax_call.php", // this is just update the db
type: "POST",
data: { table: "life", id=id, name=Attr, value=tdValue }, //
dataType: "html",
done: function(data) {
//Update values using
cell.data('id', YourNewID)
}
});
})
答案 1 :(得分:1)
我想你的意思是使用javascript / jquery,这意味着到达id的最简单方法是使用jqueries“attr”-function。
现在的问题是你应该使用哪个选择器,我想在这种情况下你的输入字段id(“sabbir”)足够了。您必须自己决定。
$("#sabbir").closest("td").attr("id", yourNewId);
作为对你评论中其他问题的回答:
$("#"+yourNewId).html(data);
应该可以替换tds HTML。
答案 2 :(得分:1)
来自数据库的您的ID 2*Name>Engr._C.F._Zaman
是不好的。因为特殊字符并不总是给出你想要的结果,所以你应该避免使用这个特殊字符。您可以使用data-*
存储数据库信息,这样您就不必每次都更改 ID 。