有一个textarea,还有个input是file类型,让input的onchange后,把文件路径添加到textarea光标所在位置。
可是选完文件后selection.createRange().text会插入到开头了???

解决方案 »

  1.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>无标题文档</title>
    <script language="javascript">
    var a;
    function aaa(obj){
      a=document.selection.createRange();
    }
    function abc(obj)
    {
        a.text=obj.value;
    }
    </script>
    </head>
    <body>
    <input type="file" onchange="abc(this)"> <br>
    <textarea id="abc" onclick="aaa(this)">abc</textarea>
    </body>
    </html>
      

  2.   


    <script language="javascript">
    var a;
    function aaa(obj){
      a=document.selection.createRange();
    }
    function abc(obj)
    {
        a.text=obj.value;
    }
    </script>
    </head>
    <body>
    <input type="file" onchange="abc(this)"> <br>
    <textarea id="abc" onclick="aaa(this)">abc</textarea>
    </body>
      

  3.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title></title>
    <script language="javascript">
    var sel;
    function getSelection(){
      sel=document.selection.createRange();
    }
    function record(obj)
    {
      if (sel) sel.text=obj.value;
    }
    </script>
    </head>
    <body>
    <input type="file" onchange="record(this)"> <br>
    <textarea id="abc" onselect="getSelection()">abcdefghi</textarea>
    </body>
    </html>
      

  4.   

    3楼的代码也是从1楼的代码中抠出来修改的,改动有:
    1、变量、函数命名,去掉一个不必要的函数参数
    2、最重要的是,调整了一个事件,onclick ->> onselect, 这样可以支持选中一部分文字的情况
      

  5.   

     1楼正解!
    不过应该将onSelect和onClick一起加上才更完善。
    <textarea id="abc" onClick="aaa(this)" onSelect="aaa(this)">abc</textarea>
      

  6.   

    用onblur吧onchange是表示你的鼠标还在file input里,其实此时焦点不在textarea里...onchange后,只是把值输入到textarea,而不能输入到集点处.