簡體   English   中英

將所選值服務器端下拉列表傳遞給javascript函數

[英]Pass selected value server side dropdown list to javascript function

我有這樣的Web表單和JavaScript函數:

網絡表格

<div>
    <asp:DropDownList runat="server" ID="ddlType">
        <asp:ListItem Value="1" Text="Type1"></asp:ListItem>
        <asp:ListItem Value="2" Text="Type2"></asp:ListItem>
    </asp:DropDownList>
    <asp:LinkButton  ID="lnkTest" OnClientClick='<%= "getValue('0' + '|' + 'ddlType.SelectedValue');return false;" %>' runat="server" Text="text">
                           new
    </asp:LinkButton>
</div>

JavaScript功能

<script>
    function getValue(Input) {       
        var result = Input.split("|");
        section1 = result[0];
        section2 = result[1];
    }
</script>

我需要將包含'0' (硬編碼)和ddlType.SelectedValue字符串傳遞給getValue 此Web表單存在語法錯誤Server tags cannot contain <% ... %> constructs (我知道)。 我可以通過getElementById獲取選定的值,但我想將SelectedValue作為參數傳遞。 我讀了很多帖子,但沒有一個沒有通過SelectedValue

如果有人可以解釋該問題的解決方案,這將非常有幫助。

SelectedValue是服務器端值。 服務器在頁面加載時(即在頁面呈現給用戶之前)可用於服務器端代碼。 在javascript中,它根本沒有任何意義,並且在用戶單擊鏈接時不可用。

如果要在客戶端獲取選定的值,可以執行以下操作:

首先,從LinkBut​​ton中刪除所有OnClientClick代碼。

其次,編寫所有這樣的javascript(在頁面底部,完成所有HTML / ASP標記后:

document.getElementById("<%=lnkTest.ClientID %>").addEventListener("click", function(event) {
  event.preventDefault(); //stop default action of the link button, to allow script to execute
  var selectedVal = document.getElementById("<%=ddlType.ClientID %>").value;
  getValue('0|' + selectedVal);
});

這將導致瀏覽器偵聽用戶單擊按鈕,然后運行給定的JS函數。 該函數獲取下拉列表的當前選定值(在瀏覽器中選定-由於沒有發生回發,服務器此時不知道選擇了什么),並將該選定值傳遞給現有的getValue函數。

注意:如果您想知道,我使用結構<%=ddlType.ClientID %>的原因是因為ASP.NET根據位於其中的服務器端控件的結構動態創建每個元素的客戶端ID。 。 因此,僅直接依賴服務器端ID(例如“ ddlType”)將無法可靠地標識呈現的DOM中的元素。 .NET在運行時提供ClientID值,以便允許我們訪問生成的ID。

暫無
暫無

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

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