В моем проекте у меня есть раскрывающийся список, в котором отображаются разные коды валют со всего мира. В этом раскрывающемся списке используется подключаемый модуль jQuery «Выбранный». При выборе кода валюты все соответствующие символы на странице меняются, т. е. при выборе GBP будет отображаться британский фунт (£), а при выборе USD — доллар США ($).
При загрузке страницы валюта пользователя по умолчанию выбирается из списка на основе модели. Пожалуйста, смотрите ниже:
@Html.DropDownListFor(model => model.CurrencyCode, Model.CurrencyList != null ? Model.CurrencyList : new SelectList(new[] { "" }), Model.CurrencyCode != null ? Model.CurrencyCode.ToString() : "--Select Currency Code--", new { id = "CurrencyCode", onchange = " CurrencySymbol($('#hidesubtotal').val(), $('#hidevat').val(), $('#hidetotal').val(),$('#hidediscount').val()); ", @class = TransactionHelpers.cssClass(Validation, "CurrencyCode", "chzn-select"), style = "width:200px; text-align:left;" })
Это отлично работает как в Chrome, так и в Firefox, выбран правильный вариант, и все соответствующие заполнители отражают выбор. Однако при отображении в Internet Explorer это игнорируется, и по умолчанию в раскрывающемся списке используется «Выбрать вариант», а не код валюты пользователя, который должен быть выбран заранее. Добавив следующий параметр, '@data_placeholder = Model.CurrencyCode', я могу заставить IE заполнить раскрывающийся список правильным кодом, но изменения не отразятся в другом месте, если пользователь не выберет повторно и не выберет вариант.
Как лучше всего это сделать, чтобы IE отражал изменения при загрузке без дальнейшего взаимодействия? Любая помощь будет принята с благодарностью.
РЕДАКТИРОВАТЬ: В соответствии с запросом здесь приведен фрагмент кода из модели, где код валюты передается в TransactionViewModel:
public string CurrencyCode { get; set; }
А также обработка JavaScript:
var selectedCurrency = $('#CurrencyCode option:selected').text();
if (selectedCurrency != '--Select Currency Code--') {
var matchedCurrecyOptions = $("#CurrencyCode option:contains('" + selectedCurrency + "')");
if (matchedCurrecyOptions.length == 2) {
var currencyValue = matchedCurrecyOptions[1].value;
if (typeof currencyValue !== 'undefined') {
$('#CurrencyCode option:selected').val(currencyValue).trigger("liszt:updated");
}
}
}
Если я внесу изменение в раскрывающийся список, это изменение будет реплицировано по всей странице, но не для начальной записи.