创建一个使用Dave Hauenstein的edit-in-place和jQuery的autocomplete插件的WYSIWYG编辑器。
代码包含以下部分:HTML,就地编辑和自动填充。
成为就地编辑文本字段的HTML元素:
<span class="edit" id="edit">Edit item</span>
使用“就地编辑”插件的JavaScript代码:
$('#edit').editInPlace({
url : window.location.pathname,
hover_class : 'inplace_hover',
params : 'command=update-edit',
element_id : 'edit-ac',
on_edit : function() {
return '';
}
});
on_edit
是用户点击关联的span
元素时调用函数的自定义代码。返回的值用于为文本输入字段设定种子。从理论上讲,插件应该用span
元素替换DOM中的input
元素,类似于:
<input type="text" id="edit-ac" />
自动填充代码:
$('#edit-ac').autocomplete({
source : URL_BASE + 'search.php',
minLength : 2,
delay : 25
});
自动完成代码的时间似乎与编辑就地代码的时间不一致。
我认为在 autocomplete
字段添加到DOM后,编辑就地插件需要调用input
代码段。
如何集成这两个插件,以便当用户点击“就地编辑”字段时,自动完成代码会在通过编辑添加的DOM元素上提供自动完成功能?
谢谢!
答案 0 :(得分:2)
通过指示代码在输入字段上附加标识符来修改jQuery就地编辑器源代码。
此部分详细说明了所需的更新。
在默认设置中提供新属性:
editor_id: "inplace_id", // default ID for the editor input field
on_create: null, // function: called after the editor is created
更改inputNameAndClass
功能以使用editor_id
设置:
/**
* Returns the input name, class, and ID for the editor.
*/
inputNameAndClass: function() {
var result = ' name="inplace_value" class="inplace_field" ';
// DJ: Append the ID to the editor input element.
if( this.settings.editor_id ) {
result += 'id="' + this.settings.editor_id + '" ';
}
return result;
},
更改replaceContentWithEditor
功能以调用创建功能:
replaceContentWithEditor: function() {
var buttons_html = (this.settings.show_buttons) ? this.settings.save_button + ' ' + this.settings.cancel_button : '';
var editorElement = this.createEditorElement(); // needs to happen before anything is replaced
/* insert the new in place form after the element they click, then empty out the original element */
this.dom.html('<form class="inplace_form" style="display: inline; margin: 0; padding: 0;"></form>')
.find('form')
.append(editorElement)
.append(buttons_html);
// DJ: The input editor is part of the DOM and can now be manipulated.
if( this.settings.on_create ) {
this.settings.on_create( editorElement );
}
},
现在可以激活自动填充功能,显示就地编辑。
HTML代码段与以前一样。对editInPlace
的新调用类似于:
$('#edit').editInPlace({
url : window.location.pathname,
hover_class : 'inplace_hover',
params : 'command=update-edit',
editor_id : 'edit-ac',
on_create : function( editor ) {
$('#edit-ac').autocomplete({
source : URL_BASE + 'search.php',
minLength : 2,
delay : 25
});
},
on_edit : function() {
return '';
}
});
只要激活就地编辑器,就会将自动完成功能附加到就地编辑器。