2

属性があるときにng-messageslikeを使用して検証する方法は?ng-maxlength<textarea>ui-tinymce

それとももっと良い方法がありますか?

<div class="form-group">
    <div class="col-sm-12">
        <label>Description</label>
        <p class="small">Please provide as much detailed information as possible.</p>
        <textarea name="description" class="form-control required" ui-tinymce="tinymceOptions" ng-model="aC.testData.description"
                  ng-maxlength="100" required></textarea>
        <div class="help-block" ng-messages="mainForm.description.$error" ng-show="mainForm.description.$touched">
            <p ng-message="required">A description is required.</p>
            <p ng-message="maxlength">Description must not exceed 100 characters.</p>
        </div>
    </div>
</div>
4

2 に答える 2

1

forced_root_block: ""tinymce オプションへの追加も機能するはずです。デフォルトでは、最初から追加されません<p></p>

于 2016-01-14T14:42:13.110 に答える
1

表示されている問題は、標準のディレクティブが文字をカウントするだけなので、単純な (空の) HTML サンプルです。

<p></p> 

実際には「目に見える」コンテンツがない場合でも、実際には 7 文字として表示されます。別のエディター用のカスタム ディレクティブを作成しましたが、最終的には HTML に対して jQuery の .text() 関数を使用しました。これにより、すべての HTML タグが削除され、エディター内の実際のテキスト文字数の概算が提供されます。これは、指令のコードの一部です。

var jStrippedString = jQuery(modelValue).text().trim();
return (maxlength < 0) || ngModelCtrl.$isEmpty(jStrippedString) || (jStrippedString.length <= maxlength);

エディター用のモデル データを取得し、この検証を自分で実行できるようにするカスタム Attribute ディレクティブを作成することをお勧めします。

于 2015-12-10T15:57:23.673 に答える