簡體   English   中英

如果我寫了runat =“ server”,則說明JavaScript代碼錯誤

[英]Error in javascript code if I wrote runat=“server”

html中的代碼:

        <input type="text" name="fileName" id="fileName" class="file_input_textbox" readonly="readonly" />

        <div class="file_input_div">
          <input type="button" value="Search files" class="file_input_button" />
          <input type="file" class="file_input_hidden" onchange="javascript: document.getElementsByName('fileName')[0].value = this.value" />
        </div>

它正常工作。 但是,如果我會這樣寫:

<input runat="server" type="text" name="fileName" id="fileName" class="file_input_textbox" readonly="readonly" />

    <div class="file_input_div">
      <input type="button" value="Search files" class="file_input_button" />
      <input type="file" class="file_input_hidden" onchange="javascript: document.getElementsByName('fileName')[0].value = this.value" />
    </div>

它無法正常工作,出現錯誤:document.getElementsByName(...)。0'為null或不是對象

當您添加runat="server"idname將呈現為不同的name並且可能會被asp.net更改

為了得到呈現名稱使用UniqueID ,並把它作為<%=fileName.UniqueID%> ,所以你的代碼,因為它是必須做到:

<input runat="server" type="text" name="fileName" id="fileName" class="file_input_textbox" readonly="readonly" />

    <div class="file_input_div">
      <input type="button" value="Search files" class="file_input_button" />
      <input type="file" class="file_input_hidden" 
         onchange="javascript: document.getElementsByName('<%=fileName.UniqueID%>')[0].value = this.value" />
    </div>

我驗證了這一點,這樣,當將其添加到母版頁中時,名稱和ID就會更改。 如果它們獨自出現在沒有母版頁的頁面上,則它們保持原樣,但是如果您將它們添加到母版頁上,它們會發生變化,您需要通過呈現的ID來獲取它們。

請注意,輸入控件上的clientidmode="Static"不適用於name而僅適用於id因此,如果添加它並嘗試使ID保持相同,則必須按ID而不是名稱獲取元素。

您可以使用控件的ID,但是如果您擁有母版頁,並且使用的是模板或網格,則會出現問題,那么ID將被更改。 因此,您可以將客戶端ID模式設置為靜態,這樣在這種情況下就不會更改

<input runat =“ server” type =“ text” name =“ fileName” id =“ fileName” class =“ file_input_textbox” readonly =“ readonly” />

或者,您可以獲取控件的客戶端ID。

范例:

document.getElementById(<%= fileName.ClientID%>);

希望這會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM