Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.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_Textarea - Fatal编程技术网

Javascript 为什么这个文本区域看起来只添加了一个空格而不是四个?

Javascript 为什么这个文本区域看起来只添加了一个空格而不是四个?,javascript,jquery,textarea,Javascript,Jquery,Textarea,这是我的密码: doc.on("keydown", ".textarea_code_snippet", function(e) { if(e.keyCode === 9) { // tab was pressed // get caret position/selection var start = this.selectionStart; var end = this.selectionEnd; var $this =

这是我的密码:

doc.on("keydown", ".textarea_code_snippet", function(e) {
    if(e.keyCode === 9) { // tab was pressed

        // get caret position/selection
        var start = this.selectionStart;
        var end = this.selectionEnd;

        var $this = $(this);
        var value = $this.val();

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

        // put caret at right position again (add one for the tab)
        this.selectionStart = this.selectionEnd = start + 1;

        // prevent the focus lose
        e.preventDefault();
    }
});
它处理
中的制表键。按Tab键时,它会将
\t
附加到文本区域。现在我想添加4个空格。这是我的新版本:

.
.
 $this.val(value.substring(0, start)
             + "    "
             + value.substring(end));
.
.
但当我按Tab键时,它只在文本区域添加一个空格。如何修复它?

它确实添加了四个空格。你只是忘了调整一件事:

// put caret at right position again (add one for the tab)
this.selectionStart = this.selectionEnd = start + 1;
您可能会看到插入符号仅移动一个空间。您需要将上述行更改为:

// Put caret at right position again (add four for four spaces)
this.selectionStart = this.selectionEnd = start + 4;

您是否尝试过更改
this.selectionStart=this.selectionEnd=start+1
this.selectionStart=this.selectionEnd=start+4?它总是为我添加4个空格…我不太明白问题的标题。JavaScript中的空格符号是空格…我测试了你说的。。但当我按下选项卡时,仍然会追加一个选项卡(
\t
)button@MartinAJ您正在使用问题中显示的更改版本,对吗?您已经在使用四个空格而不是
“\t”
?为了让我的问题更清楚,我想当您按
选项卡时,您可以按backspace 4次。@MartinAJ是的,显然如果您仍然保留
“\t”
,那么您将得到一个
“\t”
。如果你想要四个空格,那么就用四个空格,正如你在问题中已经做的那样。这就是为什么我在我的帖子中说“你只是忘记了[…]”,而不是“你做错了,应该这样做”。