【发布时间】:2011-04-11 08:31:34
【问题描述】:
我正在尝试使用 jquery 捕获通过在 ck 编辑器中按保存提交的表单提交。
我的javascript代码是
$(function() {
var config = {
skin : 'office2003',
toolbar :[
['Save','Preview'],
['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print'],
['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],
['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
['Link','Unlink'],
['Image','Table','HorizontalRule','SpecialChar','Iframe'],
['Format','Font','FontSize'],
['TextColor','BGColor', 'Bold','Italic','Underline','Strike','-','Subscript','Superscript']
]
};
$('#cont').ckeditor(config);
$('form').submit(function() {
var form = $(this);
var name = form.children('#name').val();
var desc = form.children('#desc').val();
var cont = form.children('#cont').val();
var id = form.children('#id').val();
$.ajax({
url: basePath + 'admin/ajax/pages/edit',
type: 'POST',
data: {
name: name,
desc: desc,
cont: cont,
id: id
},
success: function(data) {
if (data.response)
$('#ajaxSuccess').show('fast').delay(10000).hide('fast');
else
$('#ajaxError').show('fast').delay(10000).hide('fast');
},
error: function(data) {
$('#ajaxError').show('fast').delay(10000).hide('fast');
}
});
return false;
});
});
但由于某种原因,提交处理程序似乎甚至没有被调用(通过alert('called'); 作为第一行进行测试),而是正常提交了表单。
我做错了什么?
根据下面的答案,我已将我的代码更新为
$(function() {
var saveCmd = {
modes : { wysiwyg:1, source:1 },
exec : function( editor ){
jQuery($form = editor.element.$.form).submit();
}
};
var pluginName = 'safesave';
// Register a plugin named "save".
CKEDITOR.plugins.add(pluginName, {
init : function( editor ){
var command = editor.addCommand( pluginName, saveCmd );
command.modes = { wysiwyg : !!( editor.element.$.form ) };
editor.ui.addButton( 'SafeSave',{
label : editor.lang.save,
command : pluginName,
className : 'cke_button_save'
});
}
});
var config = {
skin : 'office2003',
toolbar :[
['SafeSave','Preview'],
...
但是现在我没有保存按钮,怎么了?
【问题讨论】:
-
$('form').submit(function() { alert('hello'); })检查提交是否被调用。 -
@experimentX - CKEditor 使用 javascript
form.submit()调用提交,这是 jQuery 或任何其他方式无法捕获的。
标签: jquery forms post ckeditor