4

有没有转换apple-tab-space 字符的库?

如果没有,您能否建议一种有效的方法?

我在使用 contenteditble div 的代码编辑器时遇到了一些问题(没关系)

4

3 回答 3

3

尝试听keydown,并附&nbsp;加到<input>'s val()

$(function () {
    $('textarea').keydown(function (e) {
        var code = e.keyCode || e.which;
        if (code == '9') {
            $(this).val($(this).val() + '&nbsb;')
            return false;
        }
    });
});

请点击此处: http ://plnkr.co/edit/GF80PSJPLiBOCPJINDuv?p=preview

return false;键(没有双关语),因为在输入中点击选项卡会固有地将用户推进到下一个输入。值得注意的是,这预期的行为,因此在向用户展示此功能时请记住这一点。

更新:非 jQuery 示例

我突然想到你没有用 jQuery 标记这个问题,所以这里也是 vanilla JavaScript 解决方案:

window.addEventListener('load', function () {
    document.getElementsByTagName('textarea')[0].addEventListener('keydown', function (e) {
        var code = e.keyCode || e.which;
        if (code == '9') {
            this.value = this.value + '&nbsb;';
            e.preventDefault();
        }
    });
}, false);

请点击此处: http ://plnkr.co/edit/QJc3Lt2TQGBo8CQqtESO?p=preview

于 2013-08-30T04:59:49.770 回答
1

试试这个(用你要定位的实际 div 的选择器替换“myDiv”):

$('#myDiv').html(function() {
    return this.innerHTML.replace(/\t/g, '&nbsp;');
});

我从这个答案中提取了这个代码片段:Replaceing tab characters in JavaScript

于 2013-08-29T00:01:05.807 回答
1

从您的问题来看,听起来好像在您的 Mac 上的浏览​​器或代码编辑器中您想要重新映射组合键(命令选项卡)以输出“ ”(出于显示目的省略分号)。

如果这确实是您想要做的,那么您可以在此处查看一个名为 keyremap4macbook 的出色实用程序。我用它在远程桌面会话期间重新映射密钥,它真的很棒。您可以仅对某些应用程序进行映射,这甚至比现有的通用键映射实用程序更好。

于 2013-08-31T20:34:51.720 回答