Backspace Plugin

Handles proper behavior for Backspace and Delete keys with support for deleting characters, words, and sentences.

Description

This plugin manages deletion operations in the editor, providing smart handling for various deletion scenarios including:

  • Character-by-character deletion
  • Word deletion
  • Sentence deletion
  • Handling of empty blocks
  • Managing lists and nested structures
  • Proper deletion across formatting boundaries

Features

  • Character Deletion: Standard backspace/delete behavior
  • Word Deletion: Delete entire words with keyboard shortcuts
  • Sentence Deletion: Delete entire sentences
  • Customizable Hotkeys: Configure keyboard shortcuts for all deletion modes
  • Smart Merging: Intelligently merges blocks when deleting at boundaries
  • List Handling: Proper behavior when deleting in lists
  • Events: Hooks for customizing deletion behavior

delete.hotkeys

Configure keyboard shortcuts for different deletion modes.

{
  delete: string[];        // Forward delete
  deleteWord: string[];    // Delete next word
  deleteSentence: string[]; // Delete next sentence
  backspace: string[];     // Backward delete
  backspaceWord: string[]; // Delete previous word
  backspaceSentence: string[]; // Delete previous sentence
}

Default values:

const editor = Jodit.make('#editor', {
  delete: {
    hotkeys: {
      delete: ['delete', 'cmd+backspace'],
      deleteWord: ['ctrl+delete', 'cmd+alt+backspace', 'ctrl+alt+backspace'],
      deleteSentence: ['ctrl+shift+delete', 'cmd+shift+delete'],
      backspace: ['backspace'],
      backspaceWord: ['ctrl+backspace'],
      backspaceSentence: ['ctrl+shift+backspace', 'cmd+shift+backspace']
    }
  }
});

Custom Hotkeys

const editor = Jodit.make('#editor', {
  delete: {
    hotkeys: {
      backspace: ['backspace'],
      delete: ['delete'],
      backspaceWord: ['alt+backspace'],
      deleteWord: ['alt+delete']
    }
  }
});

Programmatic Deletion

const editor = Jodit.make('#editor');

// Delete forward (like pressing Delete key)
editor.execCommand('deleteButton');

// Delete backward (like pressing Backspace)
editor.execCommand('backspaceButton');

// Delete next word
editor.execCommand('deleteWordButton');

// Delete previous word
editor.execCommand('backspaceWordButton');

// Delete next sentence
editor.execCommand('deleteSentenceButton');

// Delete previous sentence
editor.execCommand('backspaceSentenceButton');

Using Events

const editor = Jodit.make('#editor');

// Hook before deletion
editor.events.on('backSpaceBeforeCases', (backspace, fakeNode) => {
  console.log('About to delete:', backspace ? 'backward' : 'forward');
  // Return true to prevent default deletion
});

// Hook after deletion
editor.events.on('backSpaceAfterDelete', (backspace, fakeNode) => {
  console.log('Deleted:', backspace ? 'backward' : 'forward');
});

backSpaceBeforeCases

Fired before deletion logic is executed. Return true to override default behavior.

Parameters:

  • backspace: boolean - True if backspace, false if delete
  • fakeNode: Node - Temporary node used for deletion tracking

backSpaceAfterDelete

Fired after deletion is complete.

Parameters:

  • backspace: boolean - True if backspace, false if delete
  • fakeNode: Node - Temporary node used for deletion tracking

Notes

  • This plugin is essential for proper editor functionality and should not be disabled
  • Required plugin: hotkeys
  • Handles complex cases like deleting across formatting, merging blocks, and managing lists
  • Word/sentence deletion uses Unicode word boundaries for proper multilingual support

Classes

DeleteMode

DeleteMode: "char" | "word" | "sentence"

Defined in

jodit/src/plugins/backspace/interface.ts:11