Выбранный мультиселекторный виджет очищается при отправке формы в MVC 4

0

Я использую выбранный мультиселективный виджет на моем MVC-представлении со следующим html.

@Html.DropDownListFor(m => m.Branch, new SelectList(ViewBag.Branches, "Value", "Text"), new { @class = "chzn-select-deselect", data_placeholder = "Select Branch", @multiple = "true" })

И у меня есть значок обновления на представлении с типом ввода ввода; по клику которого у меня есть следующий код.

$("#dbRefresh").click(function (e) {
        e.preventDefault();
        var Form = $("form[id='FrmDashBoard']");
        Form.validate();
        if (Form.valid()) {
            Form.find('ul').empty();
            var fromDate = $("#FromDate").val();
            var toDate = $("#ToDate").val();
            var BranchList = $("#Branch").val();//chosen multiselect widget                
            var BranchString = "";
            if (BranchList != null)
                $.each(BranchList, function (index, item) {
                    BranchString += item + ",";
                });

            if (BranchString.length > 0)
                BranchString = BranchString.slice(0, -1);
            $.ajax({
                type: "POST",
                url: '@Url.Action("SetDashBord_DateFilter", "Home")',
                dataType: "json",
                data: { FromDate: fromDate, ToDate: toDate, Branches: BranchString }
            });
            DisplayPOXOrderStatistics(fromDate, toDate, BranchString);
            DisplayPOXCompletedOrdersData(fromDate, toDate, BranchString);
            DisplayHSTOrderStatisticsData(fromDate, toDate, BranchString);
            DisplayPOXCompletedOrderPieChart(fromDate, toDate, BranchString);
            DisplayCurrentYearlyTrends(BranchString);
        }
        $("#Branch").trigger("liszt:updated");
        return false;
    });

где во всех функциях, называемых выше, выполняется просто ajax-вызов & onsuccess, из которого обновляются некоторые части html из этого представления (внутренний html некоторых элементов div).

Проблема, которую я выбрал для выбранного мультиселектора Branch, заключается в том, что когда я нажимаю кнопку обновления; все элементы li из ul, имеющие классы chzn-choice, очищаются. Из-за которого выбранный виджет отображается как толстая строка на экране, т.е. высота элемента ul установлена на 0 из-за удаления элементов li. Может ли кто-нибудь предложить мне, что происходит с выбранным виджем?

  • 0
    Я не думаю, что это проблема Избранных. Даже в тех случаях, когда список выбора пуст, Chosen будет по-прежнему отображать элемент ввода высоты в одну строку. Мое лучшее предположение состоит в том, что на самом деле есть проблема в ваших манипуляциях с DOM, но здесь для этого нет никакого реального кода. Опубликуйте функции, которые действительно выполняют эту работу, чтобы мы могли увидеть, где может быть проблема.
  • 0
    Да, вы правы, я понял свою ошибку. В событии щелчка значка обновления я очищал элементы ul внутри формы. Который также очищал выбранный виджет ul. Спасибо за вашу помощь
Теги:
asp.net-mvc
jquery-chosen

1 ответ

0
Лучший ответ

Я ошибся. В событии щелчка значка обновления я очищал элементы ul внутри формы. Это также очистило мой выбранный виджет ul. Я изменил мое событие щелчка кнопки обновления, чтобы удалить оператор

Form.find('ul').empty();

Это было использовано для удаления всех сообщений об ошибках, отображаемых ранее в форме, и продолжения действия с действительным вводом пользователя. Вместо очистки ul теперь я использовал следующий код, чтобы удалить класс ошибок, применяемый к элементам управления; так что сообщение об ошибке будет удалено из сводки проверки.

$('.input-validation-error')
           .removeClass('input-validation-error');
$(".validation-summary-errors")
.removeClass("validation-summary-errors")
.addClass("validation-summary-valid");

Ещё вопросы

Сообщество Overcoder
Наверх
Меню