установить переключатель в диалоге jquery - PullRequest
0 голосов
/ 25 апреля 2010

У меня есть следующее if / else в другой форме, и оно отлично работает. Теперь я поместил его в форму, которая отображается в виде диалога jquery. Каждое оповещение по пути показывает правильное назначение, но когда открывается диалоговое окно, ни одна кнопка не выбирается.

        $("#create-company").click(function() {
            alert($('#primary_company').val().length);
            if ($('#primary_company').val().length > 0) {
                alert("if secondary");
                $('#secondary').attr('checked', 'true');
                var id = $("input:radio[name='companyType']:checked").attr('id');
                alert(id);
            }
            else {
                alert("else primary");
                $('#primary').attr('checked', 'true');
                $('#sec').hide();
                var id = $("input:radio[name='companyType']:checked").attr('id');
                alert(id);
            }
            var id = $("input:radio[name='companyType']:checked").attr('id');
            alert(id);
            $('#popupCreateCompany').dialog('open');
        });

Диалог:

        $('#popupCreateCompany').dialog(
        {
            autoOpen: false,
            modal: true,
            buttons:
            {
                'Add': function() {
                    var dialog = $(this);
                    var form = dialog.find('input:text, select');
                    $.post('/company/post', $(form).serialize(), function(data) {
                        if (data.Result == "success") {
                            var id = $("input:radio[name='companyType']:checked").attr('id');
                            if (id == "primary") {
                                $('#company').append($('<option></option>').val(data.company_id).html(data.company_name).attr("selected", true));
                                $('#primary_company').append($('<option></option>').val(data.company_id).html(data.company_name).attr("selected", true));
                                $('#company_id').append($('<option></option>').val(data.company_id).html(data.company_name).attr("selected", true));
                            }
                            else {
                                $('#company_id').append($('<option></option>').val(data.company_id).html(data.company_name));
                            }
                            dialog.dialog('close');
                            alert("Company " + data.company_name + " successfully added.");

                        }
                        else {
                            alert(data.Result);
                        };
                    }, "json")
                },
                'Cancel': function() {
                    $(this).dialog('close');
                }
            }
        });

Радиокнопки:

<label>Company Type:</label>
        <label for="primary"><input onclick="javascript: $('#sec').hide('slow');$('#primary_company').find('option:first').attr('selected','selected');" type="radio" name="companyType" id="primary" />Primary</label>
        <label for="secondary"><input onclick="javascript: $('#sec').show('slow');" type="radio" name="companyType" id="secondary" />Subsidiary</label>
        <div id="sec">
            <fieldset>
            <label for="primary_company">Primary Company:</label>
            <%= Html.DropDownList("primary_company", Model.SelectPrimaryCompanies, "** Select Primary Company **") %>
            </fieldset>
        </div>

1 Ответ

1 голос
/ 26 апреля 2010

DOM изменился при загрузке диалогового окна, поэтому вам нужно использовать метод обратного вызова для повторной инициализации значений формы.

Попробуйте события обратного вызова «open» или «focus» диалогового окна:

$('#popupCreateCompany').dialog({
      open: function(event, ui) { ... }
});
...