私はこれについてたくさんの質問があることを知っていますが、私がこれを私の生涯にわたって機能させることはできません。 this 、 2番目の回答 および this を含むいくつかの解決策を試しましたが、「必須」メッセージが表示されません。フォームは、ckeditorフィールドが空の場合でも送信します。
私はドキュメント ここ を見て、エディターの内容をアラートに渡すことができますが、これを検証プラグインと統合する方法を知るのに十分な経験がありません。私はこれに多くの時間を費やしました-誰か助けてくれますか?
これが私の現在のコードで、私はフィドルを作成しました: http://jsfiddle.net/BmZ93/1/
$('#add-job').validate({
rules: {
editor1: {
required: function()
{
CKEDITOR.instances.editor1.updateElement();
}
}
},
messages: {
Job_Title: "Required",
Job_Location: "Required",
jobid: "Required",
Job_Cat: "Required",
editor1: "Required"
}
});
ここでコードを更新します
http://jsfiddle.net/rohanppatil/BmZ93/8/
$(document).ready(function() {
$('#add-job').validate({
ignore: [],
rules: {
editor1: {
required: function()
{
CKEDITOR.instances.editor1.updateElement();
}
}
},
messages: {
Job_Title: "Required",
Job_Location: "Required",
jobid: "Required",
Job_Cat: "Required",
editor1: "Required"
},
/* use below section if required to place the error*/
errorPlacement: function(error, element)
{
if (element.attr("name") == "editor1")
{
error.insertBefore("textarea#editor1");
} else {
error.insertBefore(element);
}
}
});
});
これがうまくいくことを願って私はJSFIDDLEでこれをテストしてうまくいきました
デフォルトで:hidden
値を保持するignore
プロパティの値を変更する必要があります。 as CKEDITOR
はテキストエリアを非表示にしますjQuery検証は要素を検証しません:
ignore: []
また、required
メソッドではブール値を返す必要がありますが、返さないことに注意してください。ここではtrue
を渡すだけで十分です。
required: true
これは、CKEDITORラッパーにボーダーを追加するためにerrorPlacement
メソッドも使用する更新されたコードであり、必要に応じてカスタマイズできます。
$(document).ready(function () {
$('#add-job').validate({
rules: {
'editor1': {
required: true
}
},
messages: {
Job_Title: "Required",
Job_Location: "Required",
jobid: "Required",
Job_Cat: "Required",
editor1: "Required"
},
errorPlacement: function(error, $elem) {
if ($elem.is('textarea')) {
$elem.next().css('border', '1px solid red');
}
},
ignore: []
});
});