我有一個Telerik RadComboBox,當更改觸發某些使用AJAX從數據庫中獲取數據並使用值填充第二個下拉列表的Javascript時。問題是,我想根據第二個下拉列表中所做的選擇來填充一些帶有數據的文本框。第二個下拉列表是一個標準的ASP.NET下拉列表。下面是兩個dropdownlists代碼:SelectedIndexChange事件不會觸發動態創建的下拉列表
<telerik:RadComboBox ID="rcbCustomer" runat="server" CssClass="form-control field-standard-size fix-background-white input-sm" width ="300px" Height="140px"
EmptyMessage="Type here to find sold-to customer" LoadingMessage="Please wait, loading..." AutoPostBack="true"
RegisterWithScriptManager="false" EnableEmbeddedScripts="true" EnableVirtualScrolling="true" OnClientSelectedIndexChanged="rcbCustomer_IndexChanged">
</telerik:RadComboBox>
<asp:DropDownList ID="hidShipTo" runat="server" Height="24px" Font-Size="x-small" CssClass="form-control input-sm width-300 form-fixer" AutoPostBack="True" ></asp:DropDownList>
當第一個下拉改變它觸發此Javascript功能,填充第二個列表:
function rcbCustomer_IndexChanged(sender, args) {
//var strData = $("#<%=rcbCustomer.ClientID%>").val()
var strComboID = $find("<%=rcbCustomer.ClientID%>");
var strValue = strComboID.get_value();
var strData = "{strCustomerSoldSelected: '" + strValue + "' }";
//alert(strData);
$.ajax({
type: "POST",
url: "/webservices/ProductServer.asmx/GetShipToData",
data: strData,
contentType: "application/json; character=utf-8",
dataType: "json",
success: function (msg) {
$("#<%=hidShipTo.ClientID %>").empty().append($("<option></option>").val("[-]").html("Please select"));
$.each(msg.d, function() {
$("#<%= hidShipTo.ClientID %>").append($("<option></option>").val(this['Value']).html(this['Text']));
});
},
failure: function (xhr, ajaxoptions, thrownError) {
alert("Error1:" + xhr.status);
alert("Error2:" + thrownError);
}
});
//alert("the end");
}
我然後綁定change事件第二下拉列表如下:
$("#<%=hidShipTo.ClientID%>").change(hidShipTo_IndexChanged());
然後我希望它運行另一個函數,使用AJAX獲取數據來填充其他文本框。下面是功能(現在它被設置爲只是做一個警告,直到我知道它運行):
function hidShipTo_IndexChanged(sender, args) {
var strData = "";
alert("yes");
$.ajax({
type: "POST",
url: "/webservices/ProductServer.asmx/PopulateShipToDetails",
data: strData,
contentType: "application/json; character=utf-8",
dataType: "json",
success: function (msg) {
alert(msg);
},
failure: function (xhr, ajaxoptions, thrownError) {
alert("Error1:" + xhr.status);
alert("Error2:" + thrownError);
}
});
}
的問題是,改變事件似乎並沒有觸發。任何想法可能是什麼原因或可能是一種不同的方法?
謝謝,但是讓這個改變仍然不會觸發事件 –
添加事件時,元素是否存在?你真的在列表中選擇不同的選項嗎?簡單測試:'console.log($(「#<%= hidShipTo.ClientID%>」)。length);'當用戶更改或Ajax回調代碼更改值時,您是否希望觸發更改事件? – epascarello
是的,我已經做了長度檢查,它看到選擇器。我期望在用戶更改下拉列表時觸發更改事件。我懷疑是因爲原來的AJAX填充下拉存在有一個問題,因爲即使我可以看到在下拉列表3項,當我做了查看源文件有剛不帶選項標籤,因爲添加的選項由以前的AJAX調用。有任何想法嗎? –