您现在的位置是:首页 > 经验记录>磨刀不误砍柴工>X-editable使用文档 网站首页 磨刀不误砍柴工

X-editable使用文档

先来个使用示例

引入(项目内已有bootstrap和jquery):

<link rel="stylesheet" href="{{asset('lib/x-edittable/bootstrap3-editable/css/bootstrap-editable.css')}}">
<script rel="text/javascript" src="{{asset('lib/x-edittable/bootstrap3-editable/js/bootstrap-editable.min.js')}}"></script>

然后业内a标签定义:

<a href="#" class="edit_text" data-field="username" data-table="users" data-id="{{$v->id}}" data-is_unique="true">{{$v->username}}</a>

然后js代码:

$('.edit_text').editable({
    ajaxOptions:{type:'put'},
    send: 'always',
    type: 'text',
    url:'/admin/update_field',
    params:function (params){
        params.table = $(this).data('table');
        params.id = $(this).data('id');
        params.field = $(this).data('field');
        params.is_unique = $(this).data('is_unique');
        params.can_null = $(this).data('can_null');
        return params;
    },
    success: function (result, newValue) {
        if (result.code !== 200) {
            layer.msg(result.msg,{time:2000})
        }
    }
});

附上链接X-editable 英文文档 。

$().editable(options)

使页面上的任何HTML元素都可编辑。 通过jQuery方法。

选项(Options)

可以通过javascript $().editable({...})或通过data-* html属性定义选项。
请同时参阅input dependent options(文本输入控件)部分。
此外,您可以从其文档中选择一些弹出窗口的核心选项:bootstrap-popover,jquery-ui-tooltip。

注意,因为译者markdown语法不是很熟悉,所以表格内的代码块存在排版错误,建议将表格内代码复制下来重新进行排版。

名称类型预设值说明
ajaxOptions
since1.1.1
nullnull提交ajax请求的其他选项。 可参阅: http://api.jquery.com/jQuery.ajax
ajaxOptions: { type: 'put', dataType: 'json'}
animstringfalse动画速度(仅限行内模式)
autotextstring‘auto’允许根据元素的值自动设置元素的文本。 可以是auto \| always \| never。 适用于选择和日期。 例如,如果下拉列表为{1:'a',2:'b'}且元素值设置为1,则其html将自动设置为“a”。
auto - 仅当元素为空时,才会自动设置自动文本。
always\|never - 尝试 | 绝不设置元素的文本。
defaultValue
since 1.4.6
string|objectnull若原始字段值为空(null \| undefined \|''),将在输入中显示的值。
disabledbooleanfalse设置可编辑的禁用状态
display
since 1.2.0
function|booleannull在元素的text中进行value的自定义显示。
如果为null,则使用默认输入的显示。
如果为false,则不会调用显示方法,元素的文本将不会更改。
参数:
1. value: 要显示的当前值
2. response:从版本1.4.0起,服务器响应(显示如果在进行ajax后调用)
对于带有源(select,checklist)参数的输入是不同的:
参数:
1. value: 要显示的当前值。
2. sourceData :当前输入的项目数组(例如下拉项)
3. response:从版本1.4.0起,服务器响应(显示如果在进行ajax后调用)
要使用当前选定的项目$.fn.editableutils.itemsByValue(value, sourceData).
display: function(value, sourceData) { //display checklist as comma-separated values var html = [], checked = $.fn.editableutils.itemsByValue(value, sourceData); if(checked.length) { $.each(checked, function(i, v) { html.push($.fn.editableutils.escape(v.text)); }); $(this).html(html.join(', ')); } else { $(this).empty(); }}
emptyclass
since1.4.1
stringeditable-empty当可编辑文本为空时应用的CSS类。
emptytextstring‘Empty’元素为空时显示的文本。
errorsince 
since1.4.4
functionnull错误回调。 请求失败时调用( response status!= 200)。当您想要解析错误响应并显示自定义消息时有用。 返回类型必须为string (要在错误块中显示的消息)。
error: function(response, newValue) { if(response.status === 500) { return 'Service unavailable. Please try later.'; } else { return response.responseText; }}
highlight 
since1.4.5
string|boolean#FFFF80用于在更新后显示高亮元素的颜色。 通过CSS3过渡实现,适用于现代浏览器。
mode 
since1.4.0
string‘popup’编辑模式,可以是 popup 弹出式或inline行内式
namestringnull字段名称。 将在服务器上提交。 可以从id属性中获取
onblur 
since1.1.1
string‘cancel’用户在容器外部单击时的操作。 可以 cancel\|submit\|ignore(取消|提交|忽略)。设置忽略允许同时打开几个容器。
paramsobject|functionnull提交的其他参数。 如果定义为object- 它将附加到原始ajax数据(pk,name和value)。
如果定义为 function - 返回的对象将覆盖原始的ajax数据。
params: function(params) { //originally params contain pk, name and value params.a = 1; return params;}
pkstring|object|functionnull可编辑对象的主键(例如,数据库中的记录ID)。 对于复合键,使用对象,例如 {id:1,lang:‘en’}。 可以通过函数动态计算。
placementstring‘top’容器相对于元素的放置。
可以是top\|right\|bottom\|left (顶部|右侧|底部|左侧)。 
无法应用在行内式编辑模式。
savenochange
since1.2.0
booleanfalse是否在未提交但保存表单时保存或取消。
selector
since1.4.1
stringnull如果提供了选择器,则可编辑将委派给指定的目标。
对动态生成的DOM元素有效。
请注意,无法使用emptytext和autotext选项初始化委派的目标,因为它们实际上只有在首次单击后才可编辑。
您应该手动将editable-clickclass设置在该元素上。
此外,如果元素最初为空,则应添加classeditable-empty,set data-value =""并将emptytext写入元素:

Empty Operator

sendstring‘auto’在服务器上发送数据的策略。 可以是auto \| always \| never (自动|一直|永不)。 仅当定义了pk和url时,才会在服务器上发送’auto’数据,否则新值将存储在本地。
showbuttons
since 1.1.1
boolean|stringtrue显示按钮的位置:left(true)\| bottom \| false(左侧|底部|隐藏)。
没有按钮将自动提交。
successfunctionnull成功回调。 在服务器上成功发送值并且响应状态= 200时调用。用于处理json响应。 例如,如果您的后端响应可以是{success:true}或{success:false,msg:“server error”},则可以在此回调中检查它。
如果它返回string - 意味着发生错误,字符串显示为错误消息。
如果它返回像{newValue:这样的对象 - 它会覆盖用户提交的值。除此以外,newValue只是渲染到元素中。
success: function(response, newValue) { if(!response.success) return response.msg;}
togglestring‘click’如何切换至编辑模式。 click\| dblclick \| mouseenter \| manual(点击|双击|指针穿过|手动)。
设置为手动时,您应手动调用可编辑的显示/隐藏方法。
注意:如果在某些DOM元素的单击处理程序中调用show或toggle,则需要应用e.stopPropagation(),因为在文档上的任何单击时都会关闭容器。$('#edit-button').click(function(e) { e.stopPropagation(); $('#username').editable('toggle');});
typestring‘text’输入类型。可以是 text\|textarea\|select\|date\|checklist 等
unsavedclass
since 1.4.1
stringeditable-unsaved存储值但未发送到服务器时应用的CSS(pk为空或send=‘never’)。
如果您在本地使用可编辑项并将它们一起提交,则可以将其设置为null。
urlstring|functionnull要提交的网址,例如’/post’。
如果是函数 - 它将被调用,而不使用ajax。 函数应返回对象以运行失败/完成回调。
url: function(params) { var d = new $.Deferred(); if(params.value === 'abc') { return d.reject('error message'); //returning error via deferred object } else { //async saving data in js model someModel.asyncSaveMethod({ ..., success: function(){ d.resolve(); } }); return d.promise(); }}
validatefunctionnull客户端验证的功能。 如果返回字符串 - 表示验证未通过,且会将返回值显示。 从1.5.1开始,您可以通过从validate返回对象来修改提交的值:
{newValue: '...'} or {newValue: '...', msg: '...'}
validate: function(value) { if($.trim(value) == '') { return 'This field is required'; }}
valuemixedelement’s text输入的初始值。 如果未设置,则取自元素的文本。
请注意,如果元素的文本为空 - 文本将从值自动生成,可以自定义(请参阅autotext选项)。
例如,要显示货币符号:

方法(Methods)

所有的方法都可以通过以下形式调用: $().editable('method', params);

方法参数描述
$().editable(options)options 对象通过jQuery方法初始化可编辑元素。
$('#username').editable({ type: 'text', url: '/post', pk: 1});
activate()none激活可见容器的输入(例如设置焦点)
destroy()none从元素中删除可编辑的功能
disable()none禁用可编辑
enable()none启用可编辑
getValue()isSingle Bool 是否只返回单个元素的值返回可编辑元素的当前值。
请注意,它返回一个具有名称 - 值对的对象,而不是一个值本身。 它允许从多个元素中获取数据。
如果某些可编辑的值为null或 undefined ,则将其从结果对象中排除。 当参数isSingle设置为true时 - 假设您有单个元素,将返回editable而不是object的值。
$('#username, #fullname').editable('getValue');//result:{username: "superuser",fullname: "John"}//isSingle = true$('#username').editable('getValue', true);//result "superuser"
hide()none隐藏容器
option(key, value)key String|object 选项名称或具有多个选项的对象
value 多种类型 要加入的新值
设置新选项:
$('.editable').editable('option', 'pk', 2);
setValue(value, convertStr)value 多种类型 要加入的新值
convertStr Boolean是否将值从字符串转换为内部格式
设置编辑组件的新值
show()closeAll Boolean 是否在显示此文件时关闭所有其他可编辑容器。 默认为true。显示容器
submit(options)options Object:
1. url Object 提交数据的url
2. data Object 提交的数据
3. ajaxOptionsObject 额外的ajax选项
4. error(obj)Function 错误处理
5. success(obj,config)Function 成功处理
此方法从多个可编辑元素中收集值,并将它们全部提交给服务器。
原则上,它只为成功运行所有字段和提交的客户端验证。
请参阅 creating new records以获取详细信息。
从1.5.1起, submit可以应用于单个元素以编程方式发送数据。 在这种情况下,url, success和 error 默认初始化,你可以以此方式调用调用: $('#username').editable('submit')。
toggle()closeAll Boolean 是否在显示此容器时关闭所有其他可编辑容器。 默认为true。切换容器可见性( show / hide)
toggleDisabled()none切换可编辑元素的启用/禁用状态
validate()none对匹配的可编辑元素进行客户端验证
$('#username, #fullname').editable('validate'); // possible result: { username: "username is required", fullname: "fullname should be minimum 3 letters length" }

事件(Events)

事件回调参数描述
hiddenevent Object 事件对象
reason String 隐藏原因。 可以是save\|cancel\|onblur\|nochange\|manual
当容器被隐藏时被触发。 它既可以保存也可以取消。
注意:Bootstrap popover有自己的 hidden 事件,现在无法与x-editable的事件区别。 解决方法是检查arguments.length,对于x-editable,其值始终为2。
$('#username').on('hidden', function(e, reason) { if(reason === 'save' \|\| reason === 'cancel') { //auto-open next editable $(this).closest('tr').next().find('.editable').editable('show'); } });
init
since 1.2.0
event Object 事件对象
editable Object 可编辑的实例(因为它不能通过数据访问(’ editable’))
元素由$().editable()方法初始化时触发。 请注意,您应该在应用editable之前设置init处理程序。
$('#username').on('init', function(e, editable) { alert('initialized ' + editable.options.name);});$('#username').editable();
saveevent Object 事件对象
params Object 额外的参数:
1. newValue Mixed 提交的值
2. response Object ajax 响应
提交新值时触发。 您可以使用$(this).data('editable')来访问可编辑的实例。
$('#username').on('save', function(e, params) { alert('Saved value: ' + params.newValue);});
shownevent Object 事件对象在显示容器并呈现表单时触发(对于select将等待加载下拉选项)。
注意:Bootstrap popover有自己的 shown 事件,现在无法与x-editable的事件分开。 解决方法是检查arguments.length,对于x-editable,值始终为2。
$('#username').on('shown', function(e, editable) { editable.input.$input.val('overwriting value of input..');});

注意

注意:您可以修改$ .fn.editable.defaults为页面上的所有可编辑元素设置默认选项。
例如,强制所有元素通过PUT方法提交:$ .fn.editable.defaults.ajaxOptions = {type:“put”}


翻译文档转载至:https://blog.csdn.net/womeng2009/article/details/89327444/

文章评论

未开放
Top