在我的項目中,我有一個下拉選項,顯示來自世界各地的不同貨幣代碼。此下拉菜單使用「Chosen」jQuery插件。在選擇貨幣代碼時,頁面中所有適當的符號都會發生變化,即選擇英鎊將顯示英鎊(£),而美元將顯示美元($)。在頁面加載中選擇下拉列表中的選項
在頁面加載時,基於模型從列表中選擇用戶的默認貨幣。請看下面:
@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");
}
}
}
如果我對下拉菜單進行更改,更改將在整個頁面上進行復制,但不會用於初始條目。
你可以發佈你的模型和控制器的相關代碼嗎?我很快嘗試了你的代碼,並沒有注意到這個問題。 – 2013-03-21 22:47:21
我在我的問題中進行了編輯。我認爲我真正需要的可能是一些JavaScript,可能只是選擇當前第一個下拉列表中的任何選項,或許? – 2013-03-22 09:16:40
它應該是默認行爲。你還可以寫出生成的HTML看起來像什麼? – 2013-03-22 09:20:26