Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can i set character limit in quill editor

Tags:

angular

quill

I am using Quill Editor in angular 2, and want to limit the user to enter maximum 1000 char.

like image 853
Niraj Bharti Avatar asked Mar 15 '17 07:03

Niraj Bharti


People also ask

How to set character limit in quill editor?

on('text-change', function (delta, old, source) { if (quill. getLength() > limit) { quill. deleteText(limit, quill. getLength()); } });

What is quill rich editor?

Quill Rich Text Editor Quill is a free, open source WYSIWYG editor built for the modern web. With its modular architecture and expressive API, it is completely customizable to fit any need.

How do I create a quill editor?

You'll need to check manually if the editor's content is empty, prevent the user from submitting the form and show a message that this field is required. You can copy quill contents to a hidden input element before submitting the form as shown in this example. Save this answer. Show activity on this post.


2 Answers

There is as far as I know no built in configuration for that. You can however delete input that exceeds a certain length.

Example code from this github issue

const limit = 1000;

quill.on('text-change', function (delta, old, source) {
  if (quill.getLength() > limit) {
    quill.deleteText(limit, quill.getLength());
  }
});

It is not clear if you are using pure quill or something like ngx-quill so I cannot provide a full example. Provide more details if you want additional help with integrating it in angular.

Remember to to quill.off(...) for your text-change handler on ngOnDestroy to prevent leaks.

Edit

Solution added using the ngx-quill module.

Editor component

editor.component.ts

import { Component } from '@angular/core';

const MAX_LENGTH = 10;

@Component({
  selector: 'editor',
  templateUrl: './editor.component.html',
})
export class EditorComponent {
  /*
   * Delete added characters that exceeds max length
   */
  textChanged($event) {
    if ($event.editor.getLength() > MAX_LENGTH) {
      $event.editor.deleteText(MAX_LENGTH, $event.editor.getLength());
    }
  }
}

Editor template

editor.template.html

<quill-editor (onContentChanged)="textChanged($event)"></quill-editor>
like image 178
jgranstrom Avatar answered Oct 13 '22 02:10

jgranstrom


Here is an example using ngx-quill.

One approach of doing this would be setting the maxLength to the desired number and show an error to the user. In addition, the action can be blocked until the user fixes it.

See Image:

enter image description here

In here, I have added minLength and maxLength properties. It will display a message below the editor and disable the action button. Only when the validation is met, the button will be made active.

See Code Here:


    <quill-editor [style]="{height: '200px'}" name="notes" 
      [(ngModel)]="note" [minLength]="10" [maxLength]="400" 
       #noteInput="ngModel"></quill-editor>

    <span class="hints" *ngIf="!noteInput.valid">
      Min 10 characters and note more than 400</span>

   <button fxFlexAlign="end" mat-raised-button color="primary" 
     class="btn--rounded" (click)="addNote()" 
     [disabled]="!ticketNoteInput.valid">Add</button>

like image 35
Adithya Sreyaj Avatar answered Oct 13 '22 03:10

Adithya Sreyaj