每个Textarea的输入工具

时间:2016-08-18 09:07:11

标签: javascript jquery

我被困在这个案子上。每个textareas应该有自己的工具箱。目前只有一个是活动的(我希望超过2个区域,因此JavaScript应该通过ID识别)

我尝试过使用类似的内容:

function getID(id) {
        var $ta = id; }

但是,没有运气。

代码:

HTML

<div id="1">
<input type="button" id="1" class="unselectable" unselectable="on" style="font-weight:bold" name="bold" value="B">
    <input type="button" id="1" class="unselectable" unselectable="on" style="font-style: italic;" name="italic" value="I">

    <br><textarea id="comment_1" name="comment" aria-required="true"></textarea>
  </div>

<div id="2">
<input type="button" id="2" class="unselectable" unselectable="on" style="font-weight:bold" name="bold" value="B">
    <input type="button" id="2" class="unselectable" unselectable="on" style="font-style: italic;" name="italic" value="I">

    <br><textarea id="comment_2" name="comment" aria-required="true"></textarea>
  </div>

JavaScript的:

$(document).ready(function() {


            $("input").mousedown(function(e) {
                var $ta = $("#comment_"+this.id);

            var $startIndex = $("#startIndex"), $endIndex = $("#endIndex");

            function reportSelection() {
                var sel = $ta.getSelection();
                $startIndex.text(sel.start);
                $endIndex.text(sel.end);
            }

            $(document).on("selectionchange", reportSelection);
            $ta.on("keyup input mouseup textInput", reportSelection);

            $ta.focus();

            reportSelection();



                e.preventDefault();
                switch (this.name) {


                   case "bold":
                        $ta.surroundSelectedText("**", '**');
                        break;
                    case "italic":
                        $ta.surroundSelectedText("_", '_');
                        break;
                     case "quote":
                        $ta.surroundSelectedText("{", '}');
                        break;


                }

                $ta.focus();

                // For IE, which always shifts the focus onto the button
                window.setTimeout(function() {
                    $ta.focus();
                }, 0);
            });

        });

2 个答案:

答案 0 :(得分:0)

属性id应该是唯一的。但是,如果没有$('#comment'),则只会选择id=comment的第一个元素。在这种情况下,您可以使用class代替id

答案 1 :(得分:0)

我已经修好了这个:)

 var $ta = $("#comment_"+this.id);

分辨率: http://codepen.io/anon/pen/VjROJv