2017-02-24 63 views
0

我Asp.net形式的工作如下的OnClientClick不工作的ImageButton的隐藏文件上传

<form runat="server" id="form"> 
       <label>Select Category <span>*</span></label> 
       <asp:DropDownList ID="DropDownList1" runat="server"> 
        <asp:ListItem>Mobiles</asp:ListItem> 
        <asp:ListItem>Electronics and Appliances</asp:ListItem> 
        <asp:ListItem>Cars</asp:ListItem> 
        <asp:ListItem>Bikes</asp:ListItem> 
        <asp:ListItem>Furniture</asp:ListItem> 
        <asp:ListItem>General</asp:ListItem> 
       </asp:DropDownList> 
       <div class="clearfix"></div> 
       <label>Ad Title <span>*</span></label> 

       <asp:TextBox ID="txt_title" class="phone" runat="server"></asp:TextBox> 
       <div class="clearfix"></div> 
       <label>Ad Description <span>*</span></label> 
       <%--<textarea class="mess" placeholder="Write few lines about your product"></textarea>--%> 
       <asp:TextBox ID="txt_Body" class="mess" placeholder="Write few lines about your product" TextMode="multiline" Style="resize: none" Width="770px" Height="150px" Wrap="true" runat="server" Font-Bold="True"></asp:TextBox> 
       <div class="clearfix"></div> 
       <div class="upload-ad-photos"> 
        <label>Photos for your ad :</label> 
        <div class="photos-upload-view"> 

         <asp:ImageButton ID="ImageButton1" UseSubmitBehavior="false" OnClientClick="return chooseFile();" ImageUrl="Images/Capture.JPG" runat="server" /> 

         <asp:FileUpload ID="FileUploadControl" runat="server" Visible="False" /> 


         <div id="messages"> 
          <p>Status Messages</p> 
         </div> 
        </div> 
        <div class="clearfix"></div> 

       </div> 
       <div class="personal-details"> 

        <label>Your Name <span>*</span></label> 
        <asp:TextBox ID="txt_name" class="name" runat="server"></asp:TextBox> 
        <div class="clearfix"></div> 
        <label>Your Mobile No <span>*</span></label> 

        <asp:TextBox ID="txt_phn" class="phone" runat="server"></asp:TextBox> 
        <div class="clearfix"></div> 
        <label>Your Email Address<span>*</span></label> 

        <asp:TextBox ID="txt_email" class="email" runat="server"></asp:TextBox> 
        <div class="clearfix"></div> 
        <p class="post-terms">By clicking <strong>post Button</strong> you accept our <a href="terms.html" target="_blank">Terms of Use </a>and <a href="privacy.html" target="_blank">Privacy Policy</a></p> 

        <asp:TextBox ID="post_sub" Text="Post" type="submit" runat="server"></asp:TextBox> 
        <div class="clearfix"></div> 
      </form> 

,我想打电话给一个隐藏的文件上传使用JavaScript如下被点击的ImageButton时:

<script type="text/javascript"> 
    function chooseFile() { 
     document.getElementById("#FileUploadControl").click(); 
     alert("grt"); 
     return false; 

    } 
</script> 

但是,我无法调用函数而不是页面重新加载,因为您可以看到我也在函数中返回false。请指导我完成这项工作。

回答

0

您已设置Visible FileUpload控件的属性为false。因此它不存在于客户端。 Visible属性与HTML/CSS中的display:none不同。

你应该做这样的事情:

<span style="display: none"> 
    <asp:FileUpload ID="FileUploadControl" runat="server" /> 
</span> 

它总是最好使用的ClientID,而不是硬编码FileUpload控件的ID。

<script type="text/javascript"> 
    function chooseFile() { 
     document.getElementById("<%= FileUploadControl.ClientID %>").click(); 
     return false; 
    } 
</script> 
0

当您使用document.getElementById时,您不应该提及#,因为它已经搜索id属性,在当前状态下它将查找id #FileUploadControl,这不是您的元素ID。你的代码改成这样:

function chooseFile() { 
 
    document.getElementById("FileUploadControl").click(); 
 
    alert("grt"); 
 
    return false; 
 

 
}
<form runat="server" id="form"> 
 
        <div class="photos-upload-view"> 
 

 
         <img id="ImageButton1" OnClick="return chooseFile();" src="https://maxcdn.icons8.com/office/PNG/512/Computer_Hardware/mouse_left_click-512.png" style="widdth:40px;height:40px;" /> 
 

 
         <input type="file" ID="FileUploadControl" runat="server" style="display:none;" /> 
 

 
       </div> 
 
    
 
      </form>

+0

这是真的我已经删除'#'但仍然没有工作,chooseFile()函数本身没有被调用,因为我看不到任何警报。 – Raj

+0

@AirirhRaj对不起,我不知道jsp,但我会添加一个工作演示与html和JavaScript。 –

+0

@AirirhRaj看到编辑。 –

0

是,排名第一的是你用你#的document.getElementById( “#FileUploadControl”),这是错的,你应该使用它,而#的document.getElementById ( “FileUploadControl”)。

第二件事如果你使用Visible =“False”属性它不呈现HTML元素,没有你可以使用下面两种方法。

  1. FileUploadControl.Style [ “知名度”] = “隐藏” 在使用以下CSS类隐藏后端文件

function chooseFile() { 
 
     document.getElementById("FileUploadControl").click(); 
 
     alert("grt"); 
 
     return false; 
 

 
    }
.setDisplayNone { 
 
     display:none; 
 
    }
<asp:FileUpload ID="FileUploadControl" runat="server" CssClass="setDisplayNone" />