-1

我想要 javascript 和 HTML 用于在textarea选择所需文本时用括号、大括号、方括号和单引号或双引号括起来的文本,并且键入大括号的“开头”(左)版本,引号,父母之类的

例如,如果文本区域包含“A quick brown fox jumped”,并且选择了“brown fox”,然后我按下键盘上的左大括号键,则“brown fox”应该被大括号包围,并且未被选中. 括号、单/双引号和括号也是如此。

该解决方案应该适用于最新版本的 Chrome、FF 和 Safari。

4

2 回答 2

1

看看这个完整的解决方案:

<html>
    <head>
        <title></title>

        <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.min.js"></script>
        <script type="text/javascript">
            (function($){
                $(document).ready(function(){
                    var keyMap = {
                        '(': ')',
                        '[': ']',
                        '<': '>',
                        '{': '}',
                        '"': '"',
                        '\'': '\''
                    };

                    $('.editor').keypress(function(e){
                        if(this.selectionStart == this.selectionEnd)
                            return true;

                         e.preventDefault();

                         var txtCur = $(this).val();
                         var left = txtCur.substring(0, this.selectionStart);
                         var middle = txtCur.substring(this.selectionStart, this.selectionEnd);
                         var right = txtCur.substring(this.selectionEnd);

                         var cur = String.fromCharCode(e.keyCode);

                         if(keyMap[cur])
                            middle = cur + middle + keyMap[cur];
                         else
                            middle = cur;

                         var pos = (left+middle).length;
                         $(this).val(left+middle+right);
                         this.setSelectionRange(pos,pos);

                    });
                });
            })(jQuery);
        </script
    </head>
    <body>
        <textarea class="editor">abcdefghijklmnopqrstuvwxyz</textarea>
    </body>
</html>
于 2012-08-31T22:10:09.877 回答
1

在 Google 上搜索如何获取选定的文本范围 - 您不需要内容,只需要开始位置和长度。然后将字符串substr分解为“之前、之间和之后”部分,插入括号并将这些部分再次连接在一起。

如果您编写了代码并且遇到了真正的问题,我将很乐意提供帮助。同时,请阅读这篇谴责您在这里所表现出的态度的博文

于 2012-08-31T21:34:04.357 回答