Мне нужно создать регистрационную форму Razor с двумя полями динамического раскрывающегося списка. Первое поле Country, второе поле Region, которое должно быть заполнено при первом изменении. Список стран и список связанных регионов хранятся в моем Sql Db. Мой Razor View выглядит следующим образом:
@model Web.Models.ProfileModel
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
@Html.ValidationSummary(true)
@using (Html.BeginForm("Register", "Profile", FormMethod.Post, new { id = "RegForm" }))
{
...
<div class="editor-field">
@Html.DropDownListFor(x => x.selectedCountry, new SelectList(Model.companyCountry, "Value", "Text"), "Please select a country", new { id = "ddlCountry" })
@Html.ValidationMessageFor(x => x.selectedCountry)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.companyRegion)
</div>
<div class="editor-field">
@Html.DropDownListFor(x => x.selectedRegion, new SelectList(Model.companyRegion, "Value", "Text"), "Please select a region", new { id = "ddlRegion" })
@Html.ValidationMessageFor(x => x.selectedRegion)
</div>
...
}
внизу моего просмотра у меня есть эти сценарии. Первый:
$("#ddlCountry").change(function () {
$("#Loading").empty().html('<img src="../../Content/ajax-loader.gif" />');
var list = $("#ddlRegion")[0];
list.options.length = 0;
var option = new Option("Loading....", 0);
list.add(option);
var strSelected = "";
$("#ddlCountry option:selected").each(function () {
strSelected += $(this)[0].value;
});
$.getJSON("UpdateDdlRegion", { id: strSelected },
function (response) {
loadDdlRegion(response)
}
);
$("#Loading").empty();
});
Второе здесь:
function loadDdlRegion(response) {
var list = $("#ddlRegion")[0];
list.options.length = 0;
var option = new Option("@Core.Resources.Resources.ddlregion_msg", "");
list.add(option);
for (var i = 0; i < response.length; i++) {
var region = response[i];
var option = new Option(region.RegionName,region.Id);
list.add(option);
}
}
Кажется, он работает правильно в IE9 и Chrome, но не в Firefox 5/6!
Любая идея? Я не знаю, является ли это правильным способом реализации этих выпадающих списков. Если вы думаете по-другому, пожалуйста, ответьте!