在Ajax.BeginForm提交後,dropdownlist級聯改變()不會直接觸發。JQuery Cascade函數在改變事件後沒有立即發射
認爲,產生新的DropDownList:
@model Heelp.ViewModels.CreateAdCategoryTypeViewModel
@using (Ajax.BeginForm(MVC.Ad.CreateAd(), new AjaxOptions { UpdateTargetId = "ad", InsertionMode = InsertionMode.Replace }, new { @id = "categoryTypeForm" }))
{
@Html.HiddenFor(m => m.Category_Id)
@Html.DisplayNameFor(m => m.CategoryType_Id)
@Html.DropDownListFor(m => m.CategoryType_Id, Model.CategoryList, HeelpResources.DropdownlistCategoryFirstRecord)
@Html.ValidationMessageFor(m => m.CategoryType_Id)
}
一個填滿完成後,生成的觀點是:
@model Heelp.ViewModels.CreateAdCarViewModel
@using (Html.BeginForm()) {
<fieldset>
<legend>Car</legend>
<div id="makes">
@Html.DisplayNameFor(m => m.Make_Id)
@Html.DropDownListFor(m => m.Make_Id, Model.MakeList, HeelpResources.DropdownlistMakeFirstRecord)
@Html.ValidationMessageFor(m => m.Make_Id)
</div>
<div id="models">
@Html.DisplayNameFor(m => m.Model_Id)
@Html.DropDownListFor(m => m.Model_Id, Model.ModelList)
@Html.ValidationMessageFor(m => m.Model_Id)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
在這一點上我有一個級聯功能火災時做出改變,以填補型號清單:
$(document).ready(function() {
$(document).on("change", "#Make_Id", function() {
$('#Make_Id').cascade({
source: "/Ad/ListModelByMake",
cascaded: "Model_Id"
});
});
});
級聯功能:
// Cascade function
(function ($) {
$.fn.cascade = function (options) {
var defaults = {};
var opts = $.extend(defaults, options);
return this.each(function() {
$(this).change(function() {
var selectedValue = $(this).val();
var params = {};
params[opts.paramName] = selectedValue;
$.post(opts.url, params, function (items) {
//$.getJSON(opts.url, params, function (items) {
opts.childSelect.empty();
if (opts.firstOption != "")
opts.childSelect.append(
$('<option/>')
.attr('value', '-1')
.text(opts.firstOption));
$.each(items, function (index, item) {
// alert(opts.firstOption);
opts.childSelect.append(
$('<option/>')
.attr('value', item.Id)
.text(item.Name)
);
});
});
});
});
};
})(jQuery);
不幸的是,它只能在使Dropdownlist第二次更改後才起作用,有什麼想法嗎?
謝謝。
它仍然無法正常工作。該事件不會檢測到下拉列表中的更改。不要忘記,Make Dropdown是一個Ajax.Begin表單PartialView結果和「注入」div的結果。這可能是原因?該事件不知道新的DOM對象?在代碼中包含javascript的時刻,下拉對象不存在。他必須能夠檢測代碼中的未來對象。 – Patrick
將不得不調用插件成功回調AJAX ..插入後,然後 – charlietfl
謝謝!它正在工作;) – Patrick