我有一个MVC3 C#.Net Web App。我们正在使用ckEditor库来增强我们应用中的TextAreas。使用标准TextArea时,验证操作正确。但是,在增强的TextAreas(实现ckEditor)中,在提交页面时,验证会触发错误。即使TextArea中存在数据,“描述也是必需的”。在第二次点击提交时,表单提交正确。
域类属性:
[Display(Name = "Description")]
[Required(ErrorMessage = "Description is required.")]
public virtual string Description { get; set; }
HTML:
<td style="border: 0;text-align:left " >
@Html.TextAreaFor(model => model.Description,
new
{
rows = 5,
cols = 100,
@class = "celltext2 save-alert"
})
@Html.ValidationMessageFor(model => model.Description)
</td>
我认为应用ckEditor属性会以某种方式弄乱它。想法?`
让我澄清一下。我们有一个查询控件的.js文件,然后进行ckEditor初始化。当我删除$(this).ckeditor({})
时,它可以正常工作。
JS文件:
$('textarea').each(function () {
$(this).ckeditor({});
});
答案 0 :(得分:0)
这样的事可能有用:
$('textarea').each(function () {
var textarea = $(this);
$(this).ckeditor({}).on('blur', function() {
textarea.html( $(this).html() );
});
});
编辑(我从来没有使用jQuery适配器,经过一个小小的课程后我发现这个工作,上面的模糊永远不会触发,$(这个).html()没有定义):
$('textarea').each(function () {
var textarea = $(this);
textarea.ckeditor(function () {
textarea.ckeditorGet().on('blur', function () {
textarea.html( this.getData() );
});
});
});
答案 1 :(得分:0)
我认为这比这更简单。 CKE创建一个iframe而不是实际的textarea,并且您确实需要在提交之前使用CKEditor中的数据更新textarea的内容。但是,我建议您在提交而不是模糊时执行此操作。我建议为相关的DOM元素设置一个id,但是你明白了。
// Replace textarea(s)
$('textarea').each(function () {
$(this).ckeditor({});
});
// Bind on submit event to update the text
$('form').submit(function() {
// Upate textarea value with the ckeditor data
$('textarea').val(CKEDITOR.instances.ValueCKE.getData());
});