Я использую выбранный мультиселективный виджет на моем 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. Может ли кто-нибудь предложить мне, что происходит с выбранным виджем?
Я ошибся. В событии щелчка значка обновления я очищал элементы 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");