jquery.jeditable的改造

DataTables作为开源的jquery表格插件,对于编辑控件这块做的还远远不够,官方默认的Editor是收费的,而且功能也非常不齐全,并且这些可编辑插件都是实时在线编辑为主。不得已之下我对jeditable做了写扩展。

背景: Jeditable在线可编辑表单插件,即它是时时保存的,只要修改完就提交到服务器了。
但是很多基于表格式的数据新增、修改不需要时时保存,等数据都输入完成之后再统一提交到服务器进行保存。

jeditable的插件思路是,在控件处增加form标签,并嵌入input、select、textarea等控件,使用form提交的方式将数据提交到服务器。

源码修改,在322处,增加一个参数dataAction, 如果是local,则表示数据编辑好之后,提交到本地。
} else if(settings.dataAction == "local"){
// 对控件做了扩展,增加了设置值和获取值
setValue.apply(self, [input.val(), settings]);
getValue.apply(self, [input.val(), settings]);
self.editing = false;
callback.apply(this, [this.innerHTML, settings])
if (!$.trim($(this).html())) {
$(this).html(settings.placeholder);
}
} else {


扩展select控件,此控件是配合DataTables进行表格编辑的
select: {
getValue: function(value, settings){
var data = settings.data;
$(this).html(data[value]);
},
setValue: function(value, settings){
var oTable = settings.oTable;
var colIdx = settings.colIdx;
var rowIdx = settings.rowIdx;
oTable._fnSetCellData(rowIdx, colIdx, value);
},
element : function(settings, original) {
var select = $('<select />');
$(this).append(select);
return(select);
},
content : function(data, settings, original) {
/* If it is string assume it is json. */
if (String == data.constructor) {
eval ('var json = ' + data);
} else {
/* Otherwise assume it is a hash already. */
var json = data;
}
for (var key in json) {
if (!json.hasOwnProperty(key)) {
continue;
}
if ('selected' == key) {
continue;
}
var option = $('<option />').val(key).append(json[key]);
$('select', this).append(option);
}
/* Loop option again to set selected. IE needed this... */
$('select', this).children().each(function() {
if ($(this).val() == json['selected'] ||
$(this).text() == $.trim(original.revert)) {
$(this).attr('selected', 'selected');
}
});
/* Submit on change if no submit button defined. */
if (!settings.submit) {
var form = this;
$('select', this).change(function() {
form.submit();
});
}
}
},
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值