//文件选择框获得焦点时直接弹出文件选择对话框
StringBuilder sb = new StringBuilder("var myupload=document.getElementById('");
sb.Append(FileUpload1.ClientID);
sb.Append("');myupload.click();myupload.blur();");
FileUpload1.Attributes.Add("onfocus", sb.ToString());//当点击上传按钮时显示等待消息
StringBuilder sb = new StringBuilder("var myupload=document.getElementById('");
sb.Append(FileUpload1.ClientID);
sb.Append("');");
sb.Append("if(myupload.value!=''){document.getElementById('waiting').style.display='block';}");
btnUpload.Attributes.Add("onclick", sb.ToString());
C#,FileUpload1是个文件上传控件,btnUplad是个按钮。想要的效果是当文件上传控件获得焦点时弹出文件选择框,避免用户在其中输入非法字符。
这段代码在firefox下可以得到想要的结果,但在ie下却有问题:当选择好了要上传的文件,点击上传按钮时,也要弹出文件选择框,按理说这时是不会弹出的,百思不得其解,只好来求助,或者你有更好的解决方案也可告诉我,谢谢。

解决方案 »

  1.   

    var myupload = document.getElementById('FileUpload1');
    myupload.click();
    myupload.blur();大概就是这样一段代码加到FileUpload1的click事件中。想要的效果是:当input type=file获得焦点时自动弹出文件选择框,就像google文件那样。firefox下可以,但在ie下,当点击上传按钮时,本来是不该弹的结果也弹了,不知是什么原因?
      

  2.   

    FileUpload1.Attributes.Add("onfocus", sb.ToString());
    btnUpload.Attributes.Add("onclick", sb.ToString());
    先判断客户端的IE版本在使用相应的绑定方法
    不如在cs 文件中构件字符串变量 在页面上使用 onclick="<%#变量 %>" 这样不用判断
    或者先写js方法 在绑定调用的时候使用onclick="js方法('<%#参数 %>')" 
      

  3.   

    google的也不是光标落上去就弹出来啊~没弄明白
      

  4.   

    试试加上这句看,放在“input type=file获得焦点时”的那个处理函数中if(window.event)
       window.event.cancelBubble = true;
      

  5.   

    <input type=file id="fl" onfocus="this.click();this.blur()">
    <input type=button value="button" onclick="alert(fl.value)">
    写个简单的试了一下,没有问题是不是还触发了别的事件