如何在HTML编辑框中允许标签?

3

我知道这可能是一个非常初级的问题,但我似乎找不到答案。

如何允许多行HTML编辑框输入制表符?(而不是制表符跳到下一个控件)

我更喜欢不使用JavaScript来实现。


1
+1 因为你有 1337 的声望看起来不公平。 - iandisme
当时我正在等待它能够持续多久,现在我必须要被踩几次才行。lol - Earlz
4个回答

2

如果您想要实现这个功能,必须使用JavaScript。如果您希望使用jQuery来实现,可以参考这个示例


1
请在这个答案中添加更多内容。依赖链接是不好的实践。 - Sampson
1
他不想使用JavaScript,所以我的回答是“你不能这样做。”我只提供了额外的资源。 ;) - Shawn Steward
嗯,有时我不认为jQuery是JavaScript,因为它太简单了 :) 并且这将是一种微不足道的JavaScript,可以添加到一个ASP.NET Web应用程序中,因此选择jQuery! - Earlz

0

请点击这里查看:

<html>
<head>
<script type="text/javascript">
function setSelectionRange(input, selectionStart, selectionEnd) {
  if (input.setSelectionRange) {
    input.focus();
    input.setSelectionRange(selectionStart, selectionEnd);
  }
  else if (input.createTextRange) {
    var range = input.createTextRange();
    range.collapse(true);
    range.moveEnd('character', selectionEnd);
    range.moveStart('character', selectionStart);
    range.select();
  }
}

function replaceSelection (input, replaceString) {
    if (input.setSelectionRange) {
        var selectionStart = input.selectionStart;
        var selectionEnd = input.selectionEnd;
        input.value = input.value.substring(0, selectionStart)+ replaceString + input.value.substring(selectionEnd);

        if (selectionStart != selectionEnd){ 
            setSelectionRange(input, selectionStart, selectionStart +   replaceString.length);
        }else{
            setSelectionRange(input, selectionStart + replaceString.length, selectionStart + replaceString.length);
        }

    }else if (document.selection) {
        var range = document.selection.createRange();

        if (range.parentElement() == input) {
            var isCollapsed = range.text == '';
            range.text = replaceString;

             if (!isCollapsed)  {
                range.moveStart('character', -replaceString.length);
                range.select();
            }
        }
    }
}


// We are going to catch the TAB key so that we can use it, Hooray!
function catchTab(item,e){
    if(navigator.userAgent.match("Gecko")){
        c=e.which;
    }else{
        c=e.keyCode;
    }
    if(c==9){
        replaceSelection(item,String.fromCharCode(9));
        setTimeout("document.getElementById('"+item.id+"').focus();",0);    
        return false;
    }

}
</script>
</head>
<body>
<form>
<textarea name="data" id="data" rows="20" columns="35" wrap="off" onkeydown="return catchTab(this,event)" ></textarea>
<input type="submit" name="submit" value="Submit"/>
</form>

0

这只是我的猜想,但我认为你会希望在页面上有多个HTML编辑框,然后使用JavaScript(如jQuery)将它们放置在单独的选项卡中。

选项卡将需要某种JavaScript来创建交互。

(哎呀。不要理我。我在想视觉用户界面选项卡。而不是制表符。)


我认为他指的是Tab键产生的一系列空格,但我不确定你是否是这个意思。 :) - Slavo

-1
<input id="textbox" />

<script language="JavaScript">
<!--


    var textbox = document.getElementById("textbox");
    if (textbox.addEventListener)
        textbox.addEventListener("keydown", this.textbox_keyHandler, false);
    else if (textbox.attachEvent)
        textbox.attachEvent("onkeydown", this.textbox_keyHandler);
    function textbox_keyHandler(e)
    {
        if (e.keyCode == 9)
        {
            var textbox = document.getElementById("textbox");
            textbox.value += "\t";
            if(e.preventDefault) e.preventDefault();
            return false;
        }
    }

// -->
</script>

如果光标不在文本框的末尾,这将无法按预期工作。 - SLaks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接