Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 在页面加载时的所选下拉列表中选择选项_Jquery_Asp.net_Asp.net Mvc 3_Jquery Chosen - Fatal编程技术网

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

Jquery 在页面加载时的所选下拉列表中选择选项,jquery,asp.net,asp.net-mvc-3,jquery-chosen,Jquery,Asp.net,Asp.net Mvc 3,Jquery Chosen,在我的项目中,我有一个下拉选项,显示来自世界各地的不同货币代码。此下拉列表使用“选定”jQuery插件。选择货币代码时,页面中的所有适当符号都会发生变化,即选择英镑将显示英镑(£),而美元将显示美元($) 在页面加载时,可以根据模型从列表中选择用户的默认货币。请参阅下文: @Html.DropDownListFor(model => model.CurrencyCode, Model.CurrencyList != null ? Model.CurrencyList : new Selec

在我的项目中,我有一个下拉选项,显示来自世界各地的不同货币代码。此下拉列表使用“选定”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");
            }
        }
    }
如果我对下拉列表进行了更改,则会在整个页面中复制更改,但不会复制初始条目。

试试这个

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

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

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