如何创建监听输入和Esc键HTML5单行CONTENTEDITABLE标签(How to creat

2019-09-18 14:01发布

我在工作中有仪表板,我希望人们能够改变,以创造出他们最适合的类别选项卡上的文字。

我想这会忽略对改变单行文字Esc或提交的修改EnterBlur

我找到了答案,但想我会发布,以帮助他人。

Answer 1:

下面是HTML标记:

<span contenteditable="false"></span>

这里是jQuery的/ JavaScript的:

$(document).ready(function() {
    $('[contenteditable]').dblclick(function() {
        $(this).attr('contenteditable', 'true');
        clearSelection();
        $(this).trigger('focus');
    });

    $('[contenteditable]').live('focus', function() {
        before = $(this).text();
        if($(this).attr('contenteditable') == "true") { $(this).css('border', '1px solid #ffd646'); }
    //}).live('blur paste', function() {
    }).live('blur', function() {
        $(this).attr('contenteditable', 'false');
        $(this).css('border', '1px solid #fafafa');
        $(this).text($(this).text().replace(/(\r\n|\n|\r)/gm,""));

        if (before != $(this).text()) { $(this).trigger('change'); }
    }).live('keyup', function(event) {
        // ESC=27, Enter=13
        if (event.which == 27) {
            $(this).text(before);
            $(this).trigger('blur');
        } else if (event.which == 13) {
            $(this).trigger('blur');
        }
    });

    $('[contenteditable]').live('change', function() {
        var $thisText = $(this).text();
        //Do something with the new value.
    });
});

function clearSelection() {
    if ( document.selection ) {
        document.selection.empty();
    } else if ( window.getSelection ) {
        window.getSelection().removeAllRanges();
    }
}

希望这可以帮助别人!



文章来源: How to create a HTML5 single line contentEditable tab which listens to Enter and Esc