【问题标题】:Selecting option in Chosen dropdown on page load在页面加载时选择下拉菜单中的选项
【发布时间】:2013-03-11 06:33:16
【问题描述】:

在我的项目中,我有一个下拉选项,其中显示来自世界各地的不同货币代码。此下拉菜单使用“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 反映负载变化而无需进一步交互?任何帮助将不胜感激。

编辑:这里要求的是模型中的一个 sn-p 代码,其中货币代码在 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");
            }
        }
    }

如果我对下拉菜单进行更改,更改会在整个页面中复制,但不会针对初始条目。

【问题讨论】:

  • 你能从你的模型和控制器中发布相关代码吗?我很快尝试了您的代码,并没有发现问题。
  • 我对我的问题进行了编辑。我认为我真正需要的也许是一些 JavaScript 来选择当前在下拉列表的第一个条目中的任何选项,也许?
  • 这应该是默认行为。你能不能也写一下生成的 HTML 是什么样子的?
  • 我在我的问题中添加了一些 JavaScript 控件。下拉列表填充在 IE 中,但更改不会反映在整个页面中,除非我重新进行选择。

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


【解决方案1】:

试试这个!

$(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();
});

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2018-02-28
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    • 2014-08-03
    • 1970-01-01
    相关资源
    最近更新 更多