2017-04-18 82 views
0

我在我的網站上有以下項目,其中有母版頁;Javascript錯誤:無法獲取未點擊或空引用'點擊'的屬性

<asp:Content ID="Content5" ContentPlaceHolderID="ContentPlaceHolder4" Runat="Server"> 
    <div class="div-data-upload"> 
     <asp:UpdatePanel ID="UpdatePanel2" runat="server"> 
      <Triggers> 
       <asp:PostBackTrigger ControlID="btnUpload" /> 
      </Triggers> 
      <ContentTemplate> 
       <asp:FileUpload ID="upldExcelTemplate" runat="server" Visible="false" /> 
       <asp:TextBox ID="txtBrowse" runat="server"></asp:TextBox> 
       <asp:Button ID="btnBrowse" CssClass="btn btn-default" runat="server" Text="Browse" /> 
       <asp:Button ID="btnUpload" CssClass="btn btn-default" runat="server" Text="Upload" OnClick="btnUpload_Click" /> 
       <asp:Button ID="btnSubmit" CssClass="btn btn-default" runat="server" Text="Submit" OnClick="btnSubmit_Click" Enabled="False" /> 
      </ContentTemplate> 
     </asp:UpdatePanel> 
    </div> 
</asp:Content> 

其中我的FileUpload項目被隱藏。這是因爲我想使用CSS來設置FileUpload控件的樣式。

爲了調用upldExcelTemplate(FileUpload控件),我使用了下面的代碼,但沒有成功;

protected void Page_Load(object sender, EventArgs e) 
{ 
    btnBrowse.Attributes.Add("onclick", "document.getElementById('" + upldExcelTemplate.ClientID + "').click(); return false;"); 
} 

function fileBrowse(obj) 
{ 
    document.getElementById(obj).click(); 
} 

function fileBrowse() 
{ 
    $('#upldExcelTemplate').click() 
} 

所有此代碼最終以「Javascript錯誤:無法獲取'單擊'未定義或空引用屬性」。

我該如何解決這個問題?

+1

你的ID是不是你認爲他們是 - 看在瀏覽器的源代碼,你會看到 –

+0

有兩個功能由同名 – brk

+1

似乎'可見=「假」'搞亂因爲它可能意味着控件不會在客戶端呈現,並且不能被JS訪問。嘗試使用包含選擇器''display:none;「'的CSS類來隱藏客戶端的控件。 –

回答

0

您需要獲取服務器控件的客戶端ID。

document.getElementById("<%=upldExcelTemplate.ClientID%>").click(); 

如果你想它的jQuery

$(#"<%=upldExcelTemplate.ClientID%>").get()[0].click(); 

UPD:

<button onclick="fileBrowse('<%=FileUpload1.ClientID%>')">click</button> 
<script> 
    function fileBrowse(obj) { 
     document.getElementById(obj).click(); 
    } 
</script> 
+0

我可以編輯代碼,以便我可以將它用作fileBrowse(obj)...我嘗試使用document.getElementById(obj).click();其中obj =「<%= upldExcelTemplate.ClientID%>」但它似乎我的服務器標記是錯誤的 – Fahmieyz

+0

@Fahmieyz請參閱更新 –

0

它看起來像被山本哲哉,可見指出= false是錯誤的原因...

所以我把我的FileUpload控件放到一個div與顯示Y:無;如下;

<ContentTemplate> 
    <div class="none"> 
     <asp:FileUpload ID="upldExcelTemplate" runat="server" /> 
    </div> 
    <asp:TextBox ID="txtBrowse" runat="server"></asp:TextBox> 
    <asp:Button ID="btnBrowse" CssClass="btn btn-default" runat="server" Text="Browse" /> 
    <asp:Button ID="btnUpload" CssClass="btn btn-default" runat="server" Text="Upload" OnClick="btnUpload_Click" /> 
    <asp:Button ID="btnSubmit" CssClass="btn btn-default" runat="server" Text="Submit" OnClick="btnSubmit_Click" Enabled="False" /> 
</ContentTemplate> 

.none { 
    display: none 
} 

protected void Page_Load(object sender, EventArgs e) 
{ 
    btnBrowse.Attributes.Add("onclick", "document.getElementById('" + upldExcelTemplate.ClientID + "').click(); return false;"); 
} 
相關問題