MVC3 C#TextArea / CkEditor验证问题

时间:2013-04-01 15:48:08

标签: asp.net-mvc-3 validation textarea ckeditor

我有一个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({});

});

2 个答案:

答案 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());
});