Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
jQuery plugin for making any text editable
JavaScript
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
README.md
jquery.editnibble.js

README.md

jQuery editnibble

This is an extremely simple plugin to allow you to edit any element in the DOM.

Visit the webpage for an example: http://mstratman.github.com/jquery-editnibble/

Unlike other editable plugins, this does not do any immediate Ajax submits, and does not destroy the form fields after editing.

In other words, you get those values submited with the form (if you wrap your editable elements in a form).

Usage

The markup:

    <form>
        <div id="field1" class="editable">This is editable</div>
        <div id="another_field" class="editable"><strong>And this</strong>, too</div>
    </form>

The code:

     $(".editable").editnibble();

Options

These options can be passed to the editnibble() function. e.g. $(".editable").editnibble({ editorClass: 'editor-form-element' });

        editorWrapperClass:   'editor-wrapper',
        editorClass:          'editor-form-element',
        contentsWrapperClass: 'content-wrapper',
        finishEditingEvent:   'blur', //e.g. blur, change, dblclick, click.
        hideEditorOnFinish:   true,
        selectOnEdit:         false, // should we highlight the text when the editor appears?
        allowMultipleEditors: false,
        onHide: function(textVal, context) { return textVal }, // Return something else to change it (e.g. to html-escape the contents)
        preCreateEditors:     true   // Useful if you want the submitted form to contain
                                     // all the editable fields, even if they were never
                                     // edited by the user.

Methods

hideAllEditors

    $(".editable").editnibble('hideAllEditors')

This stops editing, and hides all the editors, replacing them with their rendered content.

Tips

Escape key to stop editing

To hide all the editors when the user hits escape:

    $(document).keyup(function(e) {
        if (e.keyCode == 27) { // escape
            $(".editable").editnibble('hideAllEditors');
        }
    });

Indicating something is editable

When the user hovers over an editable element, it is a good idea to give them a clear indication that it is editable. A really simple method is to change the background color and show a tooltip.

For example, you might do the following:

    <style type="text/css">
        .editable {
            background-color:#FFFFFF;
            cursor:text;
        }
        .editable:hover {
            background-color:#FFFFCC;
        }
    </style>
    <script type="text/javascript">
        $(document).ready(function() {
            $(".editable").attr('title', 'Click to edit');
            $(".editable").editnibble();
        });
    </script>

Escaping special HTML characters

To prevent the contents from disappearing or rendering strangely, you may need to modify the contents when the editor is hidden.

For example, you might do something like this:

    $(".editable").editnibble({
        onHide: function(val, context) {
            return val
                .replace(/&(?![a-zA-Z]+;)/g, "&amp;")
                .replace(/</g, "&lt;")
                .replace(/>/g, "&gt;")
                ;
        }
    });

Multi-line textarea vs single-line input text box

If the editable element has a display value of inline, editnibble will provide an input tag (a one-line text box). Otherwise, it will give you a multi-line textarea box.

Retrieving textarea or input

To get the textarea or input form element (for example, if you wanted to turn it into a rich text editor with ckeditor or another plugin), retrieve it by its class (editor-form-element or whatever you set it to with the editorClass option):

    // e.g.
    $(".editable .editor-form-element").ckeditor();

Copyright and License

Copyright (c) 2012 Mark A. Stratman

Dual licensed under the MIT and GPL licenses:

Something went wrong with that request. Please try again.