[英]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中,它根本沒有任何意義,並且在用戶單擊鏈接時不可用。
如果要在客戶端獲取選定的值,可以執行以下操作:
首先,從LinkButton中刪除所有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.