WEB开发网
开发学院网页设计JavaScript javascript文件夹选择框的两种解决方案 阅读

javascript文件夹选择框的两种解决方案

 2010-09-14 13:33:36 来源:WEB开发网   
核心提示: 使用的时候:<td><input type="text" name="path" /></td><td><input type="button" onclick="b

使用的时候:

<td>
              <input type="text" name="path" />
            </td>
            <td>
              <input type="button" onclick="browseFolder('path')"
                value="选择生成路径" />
            </td>

2.解决方案二:

自己写一个js读取本地硬盘的选择框, 缺点是外观上较上一个差一些.<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<body>
<table border="0" cellpadding="0" width="100%" id="tb_show">    
    <tr>
      <td width="18%">文件保存位置:</td>
      <td width="82%">
        <%--<html:file property="file" size="40" styleClass="inputbox"/>--%>
        <input name="backDir" type="text" value ="C:" size="100" width="500">
      </td>
    </tr>
    <tr>
      <td>目录位置:</td>
      <td>
        <select name="tables_drive" id="tables_drives" onchange="get_drives()" ></select>
      </td>
    </tr>
    <tr>  
      <td colspan="2">      
        <select name="table_folder" id="table_folder" size="10" multiple ondblclick="get_file()"></select>
      </td>
    </tr>
    <tr>
      <td colspan="2">
        <font color="red">说明:双击列表框的一个选项,就将该文件夹下面的文件夹显示在该列表框中。第一个就是根目录</font>
      </td>
    </tr>
</table>
</body>
</html>
<script>
/**//*
*初始化,将系统所有的驱动器放入table_drives列表
*/
window.onload = new function init()
{
  var fso, s, n, e, x;
  fso = new ActiveXObject("Scripting.FileSystemObject");
  e = new Enumerator(fso.Drives);
  s = "";
  for (; !e.atEnd(); e.moveNext())
  {
   x = e.item();
   s = s + x.DriveLetter;
   s += ":";
   if (x.DriveType == 3)
     n = x.ShareName;
   else if (x.IsReady)
     n = x.VolumeName;
   else
     n = "[驱动器未就绪]";
   s +=  n + ",";
  }
  var drives = s.split(",");  
  var tableDrives = document.getElementById("tables_drives");
  for ( var i = 0; i < drives.length-1; i++ )
  {
    var option = document.createElement("OPTION");
    drives[i].split(":");
    option.value = "["+drives[i].split(":")[0]+":]"+drives[i].split(":")[1];
    option.text = "["+drives[i].split(":")[0]+":]"+drives[i].split(":")[1];
    tableDrives.add(option);
  }
}
/**//*
*tables_drives列表中选中的驱动器上所有文件夹放入table_folder列表中
*/
function get_drives()
{
  var tableDrives = document.getElementById("tables_drives");
  var tableFolders = document.getElementById("table_folder");  
  for ( var i = 0; i < tableDrives.options.length; i++ )
  {    
    if ( tableDrives.options[i].selected == true )
    {
      var fso, f, fc, s;      
      var drive = tableDrives.options[i].value.split(":")[0].substring(1,tableDrives.options[i].value.split(":")[0].length);
      document.getElementById("backDir").value = drive + ":";
      fso = new ActiveXObject("Scripting.FileSystemObject");      
       if (fso.DriveExists(drive))
      {
        d = fso.GetDrive(drive);
        if ( d.IsReady )
        {
          f = fso.GetFolder(d.RootFolder);
          fc = new Enumerator(f.SubFolders);
          s = "";
          for (;!fc.atEnd(); fc.moveNext())
          {
           s += fc.item();
           s += ",";
          }
          var len = tableFolders.options.length;
          while(len >= 0)
          {
            tableFolders.options.remove(len);
            len--;
          }
          var option = document.createElement("OPTION");
          option.value = drive + ":";
          option.text = drive + ":";
          tableFolders.add(option);
          var folders = s.split(",");                   
          for ( j = 0; j < folders.length -1; j++)
          {
            option = document.createElement("OPTION");
            option.value = folders[j];
            option.text = folders[j];
            tableFolders.add(option);
          }  
        }
        else
        {
          alert("无法改变当前内容!")
        }        
      }
      else
      return false; 
    }    
  }
}
/**//*
*table_folder双击选项中的一个选项,就将该文件夹下面的文件夹显示在table_folder列表中。
*/
function get_file()
{
  var tableFolders = document.getElementById("table_folder");  
  var tableDrives = document.getElementById("tables_drives");
  for ( var i = 0; i < tableFolders.options.length; i++ )
  {
    if ( tableFolders.options[i].selected == true )
    {
      var fso, f, fc, s;      
      var folderpath = tableFolders.options[i].value.substring(0,tableFolders.options[i].value.length);
      if ( folderpath.charAt(folderpath.length-1) == "" )
      {
        document.getElementById("backDir").value = folderpath;
      }
      else
      {
        document.getElementById("backDir").value = folderpath + "";
      }
      fso = new ActiveXObject("Scripting.FileSystemObject");  
      f = fso.GetFolder(folderpath);
      fc = new Enumerator(f.SubFolders);
      s = "";
      for (;!fc.atEnd(); fc.moveNext())
      {
       s += fc.item();
       s += ",";
      }  
      var len = tableFolders.options.length;
      while(len >= 0)
      {
        tableFolders.options.remove(len);
        len--;
      }    
      var opt = "";      
      var opt1 = "";
      for ( j = 0; j < folderpath.split("").length; j++ )
      {
        var option = document.createElement("OPTION");
        opt = opt + folderpath.split("")[j]+"";
        if ( j > 0)
        {
          opt1 = opt;
          option.value = opt1.substring(0,opt1.length-1);
          option.text = opt1.substring(0,opt1.length-1);
          tableFolders.add(option);  
        }
        else
        {
          option.value = opt;
          option.text = opt;
          tableFolders.add(option);              
        }
      }
      if ( tableFolders.options[0].value == tableFolders.options[1].value )
      {
        tableFolders.options.remove(1);
      }
      if ( s != "" )    
      {        
        var folders = s.split(",");                   
        for ( j = 0; j < folders.length -1; j++)
        {
          option = document.createElement("OPTION");
          option.value = folders[j];
          option.text = folders[j];
          tableFolders.add(option);
        }  
      }          
    }
  }
}
</script>

如果您还有好的解决方案,回帖分享一下吧.

上一页  1 2 

Tags:javascript 文件夹 选择

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接