Динамическая форма Razor / JQuery MVC3 не работает в Firefox - PullRequest
0 голосов
/ 24 августа 2011

Мне нужно создать регистрационную форму 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! Любая идея? Я не знаю, является ли это правильным способом реализации этих выпадающих списков. Если вы думаете по-другому, пожалуйста, ответьте!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...