选择页面加载时选择下拉列表中的选项

时间:2013-03-21 16:17:39

标签: jquery asp.net asp.net-mvc-3 jquery-chosen

在我的项目中,我有一个下拉选项,显示来自世界各地的不同货币代码。这个下拉列表正在使用“选择”的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");
            }
        }
    }

如果我对下拉列表进行了更改,则会在整个页面中复制更改,但不会对初始条目进行复制。

1 个答案:

答案 0 :(得分:0)

试试这个!

$(function () {
  $("#currencyCode").change( function () {
    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");
            }
        }
    }

  }).trigger();
});

应在加载时触发更改事件,并重新选择所选选项。