javascript - jQuery 中的按键 : Press TAB inside TEXTAREA (when editing an existing text)

标签 javascript jquery keypress

我想在 TEXTAREA 中插入 TAB 字符,如下所示:

<textarea>{KEYPRESS-INSERTS-TAB-HERE}Hello World</textarea>

我可以在现有的 TEXTAREA 文本之前/之后插入 - 我可以在 TEXTAREA 中插入/替换所有文本 - 但还不能插入 以一种简单的方式在现有的 TEXTAREA 文本(通过光标)中

$('textarea:input').live('keypress', function(e) {
    if (e.keyCode == 9) {
        e.preventDefault();

        // Press TAB to append a string (keeps the original TEXTAREA text).
        $(this).append("TAB TAB TAB AFTER TEXTAREA TEXT");

        // Press TAB to append a string (keeps the original TEXTAREA text).
        $(this).focus().prepend("TAB TAB TAB BEFORE TEXTAREA TEXT");

        // Press TAB to replace a all text inside TEXTAREA.
        $(this).val("INSERT INTO TEXTAREA / REPLACE EXISTING TEXT");

    }
});

有一个用于 jQuery 的“文本区域中的选项卡”插件 ("Tabby") - 但它有 254 行代码 - 我希望只有几行代码。

我研究的几个链接:(同样,我更喜欢更少的代码行)。

http://www.dynamicdrive.com/forums/showthread.php?t=34452
http://www.webdeveloper.com/forum/showthread.php?t=32317
http://pallieter.org/Projects/insertTab/

请指教。谢谢。

最佳答案

我正在为自己创建一个支持 AJAX 的简单 IDE,这样我就可以快速测试 PHP 片段。

我记得遇到过同样的问题,以下是我解决它的方法:

$('#input').keypress(function (e) {
    if (e.keyCode == 9) {
        var myValue = "\t";
        var startPos = this.selectionStart;
        var endPos = this.selectionEnd;
        var scrollTop = this.scrollTop;
        this.value = this.value.substring(0, startPos) + myValue + this.value.substring(endPos,this.value.length);
        this.focus();
        this.selectionStart = startPos + myValue.length;
        this.selectionEnd = startPos + myValue.length;
        this.scrollTop = scrollTop;

        e.preventDefault();
    }
});

#input 是textarea的ID。

代码不完全是我的,我是在谷歌某处找到的。

我只在 FF 3.5 和 IE7 上测试过它。遗憾的是,它不适用于 IE7。

关于javascript - jQuery 中的按键 : Press TAB inside TEXTAREA (when editing an existing text),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1738808/

相关文章:

javascript - toFixed(2) 函数不起作用

javascript - 日期时间日历 : select date range in a single input field

javascript - 循环遍历 getElementsByClassName

java - keyPressed 方法不工作 Java

jquery - 使用 jQuery 捕获 "Delete"按键

javascript - React Native 边框半径制作轮廓

用于验证输入的 JavaScript 正则表达式是否超过 0 个字符

javascript - 为一周脚本的每一天更改 div 样式

javascript - jquery keypress 在输入文本限制中,我希望它只允许 A-Z 和空格,但我的代码不允许 "Y"和 "Z"

javascript - jQuery,如何测试变量是文本节点,不包含标记?