被铁ajax,jQuery-当被Ajax响应更新时,ckeditor消失

致电Chris Marisic:

如果克里斯·马里西奇(Chris Marisic)希望将他的评论升级为答案,我将给他饼干.

我已经解决如下:

Ajax形式:

@using (Ajax.BeginForm(MVC.Admin.StepEditor.Edit(), new AjaxOptions { UpdateTargetId = "ajaxEditor", HttpMethod = "POST", OnComplete="ReBindCKEditor" },

new { @name = "EditStepForm", @id = "EditStepForm" }))

{

@Html.LabelFor(model => model.StepText)

@Html.TextAreaFor(model => model.StepText, 20, 68, null)

@Html.ValidationMessageFor(model => model.StepText)

}

Javascript:

由于返回的错误(请参阅对Chris Marisic的答复)指出CKEDITOR实例已经存在,因此我需要摆脱它.所以:

function BindCKEditor() {

var elem = $('#StepText');

elem.ckeditor(function () {}, { toolbar: [

['Source'],

['Preview'],

['Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Scayt'],

['Undo', 'Redo', '-', 'Find', 'Replace', '-', 'SelectAll', 'RemoveFormat'],

['Image', 'Table', 'HorizontalRule'],

['Styles', 'Format'],

['Bold', 'Italic', 'Strike'],

['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', 'Blockquote'],

['Link', 'Unlink', 'Anchor']

]

});

}

BindCKEditor()只是在锡盒上说了什么.它配置编辑器并应用它.

现在,当我用ajax响应覆盖文本区域时,我需要删除该实例并重新创建它.所以:

function ReBindCKEditor() {

delete CKEDITOR.instances['StepText'];

BindCKEditor();

}

请注意,我在OnComplete中为Ajax窗体使用ReBindCKEditor().我使用oncomplete而不是onsuccess,因为无论ajax调用成功与否,我都希望重新绑定它.

成功!:

我不能高度推荐ckeditor.我以为这将是一场噩梦,但是当我坐下来将这些想法放在一边时,我发现这里有非常简洁的文档和良好的用户论坛.

我看了很多其他的Rich Text编辑器,但都没有得到同样好的支持.雅虎的看起来不错,但是除非您是我不是的JavaScript专家,否则噩梦和文档都很差.

我差一点就带着lwrte去了,它看起来不错,但是背后没有任何支持.

我看着其他不愿透露姓名的东西.

但是ckEditor确实给我留下了深刻的印象.现在,我可以毫无恐惧或恐惧地将其推出.

注意:

我不在CKEditor上工作,也与他们没有任何关系.这是真正的热情.是的,确实存在这样的事情.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值