如何使用js粘贴文本行?

时间:2011-12-19 10:19:55

标签: javascript html

好吧,伙计们,我只是在使用js的execCommand方法执行系统复制,删除等命令。

我已经制作了两个textareas,并按下我正在执行复制,剪切等命令的按钮。

问题:

  1. 此处粘贴按钮无效。就像我从一个文本区域复制一些文本一样,它不会粘贴到其他文本区域。

  2. 此外,我还想为textareas选择全部。就像游标在textarea1上一样,如果我按下selectAll按钮,它应该只选择textarea1内容。目前它正在选择整个页面内容。

  3. 代码:

      <script language="javascript">
        function doCopy()
       {
            document.execCommand('Copy',false,0);
       }
       function doPaste()
       {
            document.execCommand('Paste');
       }
       function doCut()
       {
            document.execCommand('Cut',false,0);
       }
       function doSelectAll()
       {
            document.execCommand('SelectAll',false,0);
        }
      function doDelete()
       {
            document.execCommand('Delete',false,0);
       }
        function doUndo()
        {
            document.execCommand('Undo',false,0);
        }
        function doUnselect()
        {
            document.execCommand('Unselect',false,0);
        }
      </script>
     </head>
    <body>
    <div align="center">
      input values : ---- <br>
     <textarea align="left" id="txtArea" name="txtArea" style="width:300px;         height:50px"></textarea>
     <br>
      <input type="button" id="btnCopy" name="btnCopy" value=" Copy " onclick="doCopy()" />
      <input type="button" id="btnCut" name="btnCut" value=" Cut " onclick="doCut()" />
      <input type="button" id="btnSelectAll" name="btnSelectAll" value=" Select All " onclick="doSelectAll()" />
      <input type="button" id="btnPaste" name="btnPaste" value=" Paste " onclick="doPaste()" />
      <input type="button" id="btnDelete" name="btnDelete" value=" Delete " onclick="doDelete()" />
     <input type="button" id="btnUndo" name="btnUndo" value=" Undo " onclick="doUndo()" />
     <input type="button" id="btnUnselect" name="btnUnselect" value=" Undo " onclick="doUnselect()" />
      <br>
      Manipulate <br>
      <textarea align="left" id="txtArea1" onpaste="alert('yes');" name="txtArea1" style="width:300px;height:70px" ></textarea>
       </div>
    

    我正在为IE9做这个。

1 个答案:

答案 0 :(得分:2)

我不得不做出重大改变,希望对你好。 这个解决方案需要jquery。我用Chrome和Firefox测试了它,但我没有IE9。

    var copy = "";
    var focused_field = null;
    $("#btnCopy").click(function(){
        //set copy variable to the selected text
        txtArea = document.getElementById("txtArea");
        var start = txtArea.selectionStart;
        var end = txtArea.selectionEnd;
        copy =  $(txtArea).val().substring(start, end);
    });
    $("#btnCut").click(function(){
        //set copy variable to the selected text and cuts it
        txtArea = document.getElementById("txtArea");
        var start = txtArea.selectionStart;
        var end = txtArea.selectionEnd;
        copy =  $(txtArea).val().substring(start, end);
        $(txtArea).val(
            $(txtArea).val().substring(0,start)+
            $(txtArea).val().substring(end)
        );
    });
   $("textarea").focus(function(){focused_field = $(this);});
    $("#btnSelectAll").click(function(){
        //select all in focused field
        if(focused_field)
            focused_field.select();
    });
    $("#btnPaste").click(function(){
        //paste copyed text to manipulate field
        txtArea1 = document.getElementById("txtArea1");
        $(txtArea1).val($(txtArea1).val()+copy);
    });

这是example