2

私は CKeditor と basestance の jQuery 検証プラグインを使用しています。テキストエリア (CKEditor を含む) は jQuery によって検証されていますが、送信ボタンを 2 回クリックした後にのみ機能します。

要するに、データが CKEditor に入力されたときに初めてフォームを送信すると、「フィールドが空です」と表示されます。2 回目は問題ないと表示され、フォームが送信されます。

私はこれに対する解決策を読みました:

「すべての検証ルーチンの直前に CKEDITOR.editor::updateElement を呼び出すことで、この問題を回避できます。」

私はそれを実装する方法を見つけることができません:

$(document).ready(function(){
    CKEDITOR.replace( 'prod_description',
    {
        toolbar: 'MyToolbar'
    }
    );

    $("#btnOk").click(function(){
        CKEDITOR.instances.editor1.updateElement();
        alert('click');
    });
});

これにより、常にエラーが発生します:「CKEDITOR.instances.editor1 is undefined」

これを解決する方法についてのアイデア。CKEditor のドキュメントはこちら: http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.editor.html#updateElement

4

3 に答える 3

4

私はそれを書いて解決しました:

CKEDITOR.instances.prod_description.updateElement();

ここで、「prod_description」は、CKeditor がリンクされたテキストエリアの名前です。

于 2009-12-14T22:03:37.927 に答える
1

これは最善の方法ではないかもしれませんが、CKEditor にデータがあるかどうかを確認するだけの jquery ルールを作成しました。データがあれば、ルールに合格します。そうでない場合、失敗します。これは私にとってはかなりうまくいくようです。

//Have to build custom method to check ckeditor
jQuery.validator.addMethod("ckeditor", function(value, element) { 
    var textData = editor.getData();
    if(textData.length>0) return true;
    return false;
}, "No data in editor");

次に、私のルールは次のようになります。

'fieldName': "ckeditor"
于 2011-03-03T16:08:12.553 に答える
1

ページに複数の CKEDITORS があるので、次のようにします。

        // You need to update the editors before jqValidator.
        for (var i in CKEDITOR.instances)
        {
            CKEDITOR.instances[i].updateElement();
        }
        if (!jqValidator.form())
        {
            alert('Error Alert: please correct the errors detailed below, then click "Apply changes" again.');
            return;
        }
于 2011-07-15T21:39:26.013 に答える