2013-11-26 17 views
-2

我想知道是否有可能在JavaScript中沒有可用的表單標籤時通過id獲取元素。在javascript中獲取元素id時沒有任何表單標籤頁

我正在使用以下命令來獲取文本框的值,但我收到錯誤消息'null或undefined'。這工作正常,如果我在asp.net頁面上使用適當的表單標籤。

var _txt = document.getElementById("txt").value; 

有在javascript越來越文本框的值(當有在asp.net頁面沒有任何形式的身體和頭標記)

下面是代碼

enter code here 

任何其他方式

<asp:dropdownlist runat="server" ID="ddl" Height="20px" 
     Width="215px" ValidationGroup="aa"> 
     <asp:ListItem Selected="True" Value="0">--select--</asp:ListItem> 
     <asp:ListItem Value="1">item-1</asp:ListItem> 
    </asp:dropdownlist> 

    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
     ControlToValidate="ddl" ErrorMessage="required" InitialValue="0" 
     SetFocusOnError="True" Display="Dynamic" ValidationGroup="aa"></asp:RequiredFieldValidator> 

    <br /> 
    <asp:textbox runat="server" ID="txt" ValidationGroup="aa" Width="140px"></asp:textbox> 
    <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" 
     ControlToValidate="txt" ErrorMessage="required" InitialValue="" 
     SetFocusOnError="True" Display="Dynamic" ValidationGroup="aa"></asp:RequiredFieldValidator> 
    <br /> 

</div> 

<div> 
    <asp:validationsummary runat="server" ID="valSummary" 
     HeaderText="Vendor Ref and Contact are required" ValidationGroup="aa" 
     CssClass="valsummary"> 
    </asp:validationsummary> 
</div> 


    <asp:Button ID="btn" runat="server" Text="DO" ValidationGroup="aa" 
    Width="118px" OnClientClick="Test2()"/> 


<br /> 


<script type="text/javascript" language="javascript"> 


    function Test() { 
     var _indx = document.getElementById('ddl'); 
     var _txt = document.getElementById("txt").value; 

     if (_indx.selectedIndex == 0 || _txt == '') { 
      document.getElementById('_div').style.visibility = 'visible'; 
      document.getElementById('_div').style.display = "block"; 
     } 
     else { 

      document.getElementById('_div').style.visibility = 'hidden'; 
      document.getElementById('_div').style.display = "none"; 
     } 

    } 

    function Test2() { 
     var _indx = document.getElementById('ddl'); 
     var _txt = document.getElementById("txt").value; 
     var msg_I = "........" 
     var msg_II = "...." 
     var msg_III = ".." 


     if (_indx.selectedIndex == 0 && _txt == '') { 
      txtHeader = msg_I 
     } 

     else if (_indx.selectedIndex == 0 && _txt != '') { 

      txtHeader = msg_III 
     } 

     else if (_indx.selectedIndex != 0 && _txt == '') { 

      txtHeader = msg_II 
     } 

     document.getElementById('<%= valSummary.ClientID %>').headertext = txtHeader; 
    } </script> 
+3

你有沒有試圖使用客戶端的ID? –

+2

檢查生成的html,輸入可能有另一個ID –

+0

並檢查腳本的位置。它應該放在input元素之後,或者它應該使用'window.onload'或類似的延遲事件處理程序 – devnull69

回答

1

更改var _txt = document.getElementById("txt").value;到:

var _txt = document.getElementById("<%= txt.ClientID %>").value; 

ClientID返回您生成的ID以用於您的客戶端代碼。

+0

得到此錯誤:類型'DropDownList'的控件'ddl'必須放置在runat = server的表單標籤內。 – user1263981

+0

@ user1263981檢查您打開的'div'標籤。 – Enam

+2

@ user1263981這個錯誤與JavaScript無關。錯誤非常明顯:如果你想要服務器端表單元素,你必須有服務器端表單。如果您只想單獨下拉使用純HTML,並使用AJAX將其值發送到服務器。 –

相關問題