1

我有一个 MVC3 C# .Net Web 应用程序。我们正在使用 ckEditor 库来增强我们应用程序中的 TextAreas。使用标准 TextArea 时,Validation 会正确运行。但是,在增强的 TextAreas(实现 ckEditor)中,提交页面时,Validation 会触发错误。即使 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({});

});
4

2 回答 2

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());
});
于 2013-04-02T05:04:41.487 回答
0

像这样的东西可能会起作用:

$('textarea').each(function () {
    var textarea = $(this);
    $(this).ckeditor({}).on('blur', function() {
        textarea.html( $(this).html() );
    });
});

编辑(我从未使用过 jQuery 适配器,经过一小节课后我发现它可以工作,上面的模糊永远不会触发并且 $(this).html() 未定义):

$('textarea').each(function () {
    var textarea = $(this);
    textarea.ckeditor(function () {
        textarea.ckeditorGet().on('blur', function () {
            textarea.html( this.getData() );
        });
    });
});
于 2013-04-01T16:12:44.310 回答