1

私は MVC3 C# .Net Web App を持っています。ckEditor ライブラリを使用して、アプリの TextAreas を強化しています。標準の TextArea を使用する場合、検証は正しく動作します。ただし、強化された TextAreas (ckEditor を実装) では、ページを送信すると、検証でエラーが発生します。TextArea にデータが存在する場合でも、「説明が必要です」。[送信] を 2 回クリックすると、フォームが正常に送信されます。

ドメイン クラス プロパティ:

[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 属性を適用すると、どういうわけか台無しになっていると思います。アイデア?

もっと明確にさせてください。コントロールを照会し、ckEditor の初期化を行う .js ファイルがあります。を削除すると、$(this).ckeditor({})正常に動作します。

JS ファイル:

$('textarea').each(function () {

    $(this).ckeditor({});

});
4

2 に答える 2

0

それよりも少し簡単だと思います。CKE は、実際のテキストエリアの代わりに使用される iframe を作成します。送信する前に、テキストエリアの内容を CKEditor 内のデータで正しく更新する必要があります。ただし、ぼかしではなく送信時にこれを行うことをお勧めします。関連する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 に答える