3

複数の TinyMCE エディターを含むフォームがあります。エディターには、高度なエディターもあれば、単純なエディターもあります。クライアント側での検証にjquery 検証プラグインを使用しました。次のコードを追加して、単一の TinyMCE エディターを検証しています。

$('#submit').click(function() {

    var content = tinyMCE.activeEditor.getContent(); // get the content

    $('#description').val(content); // put it in the textarea

});

しかし今、私はすべての編集者を検証することになっています。

4

6 に答える 6

12

試す

$('#submit').click(function() {

  for (i=0; i < tinymce.editors.length; i++){
    var content = tinymce.editors[i].getContent(); // get the content

    $('#description').val(content); // put it in the textarea
  }
});

または簡単

$('#submit').click(function() {
     tinymce.triggerSave();
});
于 2012-04-25T09:41:18.087 に答える
4

より一般的なアプローチは、エディターの内容をテキストエリアに保存してから、jquery 検証にテキストエリア自体で魔法をかけることです。

tinymce.init({
    setup: function (editor) {
        editor.on('init change', function () {
            editor.save();
        });
    }
});

tinymce テキストエリアが非表示になっているため、jquery 検証コードも次のように更新する必要があります。

$('#myform').validate({
    ignore: ':hidden:not(textarea)'
});
于 2017-04-07T07:21:19.227 に答える
0

そのようにしてみてください

Java スクリプト コード

 jQuery(document).ready(function(){
            // binds form submission and fields to the validation engine
            jQuery("#formID").validationEngine();
        });

HTML コード

最初の TinyMCE

 <textarea rows="" cols="" id="first" class="validate[required] text-input tinymce"></textarea>

2 番目 1 番目 TinyMCE

<textarea rows="" cols="" id="second" class="validate[required] text-input tinymce"></textarea>

私もそのように使用しましたが、うまく機能しています

于 2012-04-25T05:26:51.060 に答える
0

Html エディター tinymce を使用している場合、必要な検証がうまく機能しません。このコードを使用して問題を解決できます。複数の Htmleditor がある場合は、アプリケーションに tinymce をインストールしてください。これが適切な解決策であることはわかっていますが、それとこの問題を解決する

モデルでは、tinymce.cshtml ページのパスを指定します。

  [Required(ErrorMessage = "Please enter About Company")]
  [Display(Name = "About Company : ")]
  [UIHint("tinymce_jquery_full"), AllowHtml]
  public string txtAboutCompany { get; set; }

  [Required(ErrorMessage = "Please enter About Company")]
  [Display(Name = "About Company : ")]
  [UIHint("tinymce_jquery_full"), AllowHtml]
  public string txtAboutCompany { get; set; }

ビューで、このようなスパンを 1 つ追加します

 <div class="divclass">
     @Html.LabelFor(model => model.txtAboutCompany, new { @class = "required" })
     @Html.EditorFor(model => model.txtAboutCompany)
     <span class="field-validation-error" id="AC" style="margin:9px 0 0 157px;"></span>
 </div>
<div class="divclass">
     @Html.LabelFor(model => model.txtAboutCompany, new { @class = "required" })
     @Html.EditorFor(model => model.txtAboutCompany)
     <span class="field-validation-error" id="AC" style="margin:9px 0 0 157px;"></span>
 </div>

送信ボタン クリック イベントで jQuery を作成する

$("#BusinessProfile").click(function () {
    var aboutC = $("#txtAboutCompany").val()
    var pinfo = $("#txtProductinfo").val();
    if (aboutC == "" && pinfo == "") {
        $("#AC").append("").val("").html("Please enter about company")
        $("#PI").append("").val("").html("Please enter product information")
        $("#bpform").valid();
        return false;
    } else if (aboutC == "") {
        $("#PI").append("").val("").html("")
        $("#AC").append("").val("").html("Please enter about company")
        $("#txtAboutCompany").focus();
        $("#bpform").valid();
        return false;
    } else if (pinfo == "") {
        $("#AC").append("").val("").html("")
        $("#PI").append("").val("").html("Please enter product information")
        $("#txtProductinfo").focus();
        $("#bpform").valid();
        return false;
    }
    else {
        $("#AC").append("").val("").html("");
        $("#PI").append("").val("").html("");
        //return true;
        $("#bpform").validate();
    }
});

あなたの問題が解決することを願っています

于 2014-03-07T05:08:40.497 に答える
0

私の経験では、jquery の検証には tinyMCE エディターに関する 2 つの問題があります。まず、tinyMCE はコンテンツをバッファリングするため、jquery 検証が参照する基礎となる textarea コンテンツは、常にエディターを反映しているわけではありません。第 2 に、jquery 検証によって検出された textarea は、tinyMCE 構造の深さのいくつかのレベルに隠されています。jquery 検証がそのテキストエリアの後にエラー メッセージを配置すると、エラー メッセージも非表示になります。

これらの問題を解決できる 2 つの個別の jquery 検証機能があります。 ノーマライザー :検証前にフィールドの内容を変換 できます。これらはどちらも setDefaults メソッドを使用してグローバルに構成できます。

 jQuery.validation.setDefaults({
    normalizer:function(val){
        var ele = jQuery(this);
        if(window.tinyMCE.editors[ele.id]){
            window.tinyMCE.editors[ele.id].save();
            return window.tinyMCE.editors[ele.id].getContents();
        }
        return val;
    },
    errorPlacement:function(error,element)
    {
        var ele = jQuery(element);
        if(window.tinyMCE.editors[ele.id]){
            var realTarget = window.tinyMCE.editors[ele.id].getContainer().parent();
            error.insertAfter(realTarget);
        }
        error.insertAfter(element);
    }
});
于 2020-10-09T18:59:07.047 に答える
-1

isDirty()代わりに、TinyMCE のメソッドを使用できます

参考:こちら

使用法

tinyMCE.activeEditor.isDirty()

お役に立てれば

于 2012-04-25T05:21:40.957 に答える