我目前有一个表单,我用作查看/编辑联系页面。我没有在每次编辑单个字段时提交值,而是尝试使用保存按钮,该按钮将从表单中编译值对象并将其提交到数据库。我遇到的问题是,当我尝试获取输入框的值时,如果该输入字段尚未编辑,则返回的值为“”
$('#view-contact-first-name').editable("getValue")
我尝试查看x-editables文档并尝试使用savenochange:true,选项,但这也没有解决我的问题。有没有人碰巧知道我可能做错了什么。 (如果需要,可以发布更多代码)
$('#view-contact-first-name').editable({
type: 'text',
name: 'FirstName',
// url: '',
emptytext: "Enter First Name",
savenochange: true,
validate: {
view_contact_first_name: function (v) { if (v == '') return 'Required field!' }
},
display: function () {
$(this).text(contact.FirstName);
}
});
答案 0 :(得分:3)
你想要做的事情会破坏x-editable的目的。
由于x-editable只允许一次更改一个输入,因此保存仅该输入的值是有意义的。
你的解决方案应该如下,虽然有点hacky:
<强> HTML 强>
<div id="containAllEditable"><!-- lots of x-editable inputs inside --></div>
<强> JS 强>
$('#containAllEditable .editable').editable({
type: 'text',
name: 'FirstName',
// url: '',
emptytext: "Enter First Name",
savenochange: true,
validate: {
view_contact_first_name: function (v) { if (v == '') return 'Required field!' }
},
display: function () {
$(this).text(contact.FirstName);
},
}).on('save',function(){
/*
* Event triggered when save is successful
*/
var dataJson;
$('#containAllEditable .editable').each(function(){
/* We build a JSON list of all input found in the div */
dataJson[$(this).attr('data-name')] = $(this).editable('getValue');
});
/* Do your ajaxy stuff and save all the form's variables */
$.ajax({
url:'url/to/saveform',
data: dataJson,
})
});