Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 插入制表符缩进,而不是跳入另一个表单元素或链接_Javascript_Jquery_Html - Fatal编程技术网

Javascript 插入制表符缩进,而不是跳入另一个表单元素或链接

Javascript 插入制表符缩进,而不是跳入另一个表单元素或链接,javascript,jquery,html,Javascript,Jquery,Html,我目前正在开发用java/jsp编写的web内容管理系统。每当用户想要编辑html格式的页面时,我希望用户能够维护html格式的缩进格式。所以现在我的问题是,每次用户按tab键,它都会跳转到另一个表单元素或链接,而不是插入缩进 例如,我希望用户能够这样键入(无需使用空格键、thinsp、ensp或emsp): 而不是像这样: <table> <tr> <td></td> </tr> </table> 有什么代码可以

我目前正在开发用java/jsp编写的web内容管理系统。每当用户想要编辑html格式的页面时,我希望用户能够维护html格式的缩进格式。所以现在我的问题是,每次用户按tab键,它都会跳转到另一个表单元素或链接,而不是插入缩进

例如,我希望用户能够这样键入(无需使用空格键、thinsp、ensp或emsp):


而不是像这样:

<table>
<tr>
<td></td>
</tr>
</table>

有什么代码可以克服这个问题吗?(我尽量避免使用任何插件,因为我希望它独立于浏览器:D)

提前谢谢

$(document).delegate('#textbox', 'keydown', function(e) {
    var keyCode = e.keyCode || e.which;

    if (keyCode == 9) {
        e.preventDefault();
        var start = $(this).get(0).selectionStart;
        var end = $(this).get(0).selectionEnd;

        // set textarea value to: text before caret + tab + text after caret
        $(this).val($(this).val().substring(0, start)
            + "\t"
            + $(this).val().substring(end));

        // put caret at right position again
        $(this).get(0).selectionStart =
        $(this).get(0).selectionEnd = start + 1;
    }
});

请参见(忽略jQuery回答)为什么这个答案被否决?重复问题的重复答案。嘿@Shea你不应该这样做。这不是一个好行为。哇,这么多重复!我确实搜索了,但不幸的是我搜索了错误的关键字。无论如何谢谢@Rony:)非常欢迎您。。。。我也有同样的问题。。。我通过这些链接解决了这个问题。。。
$(document).delegate('#textbox', 'keydown', function(e) {
    var keyCode = e.keyCode || e.which;

    if (keyCode == 9) {
        e.preventDefault();
        var start = $(this).get(0).selectionStart;
        var end = $(this).get(0).selectionEnd;

        // set textarea value to: text before caret + tab + text after caret
        $(this).val($(this).val().substring(0, start)
            + "\t"
            + $(this).val().substring(end));

        // put caret at right position again
        $(this).get(0).selectionStart =
        $(this).get(0).selectionEnd = start + 1;
    }
});