javascript - 设置从服务器端加载的后退按钮的下拉值

标签 javascript jquery ajax asp.net-mvc

我有一个包含 4 个下拉列表的页面。当我选择第一个下拉列表时,Ajax 调用将过滤其他 3 个下拉列表数据,然后单击提交按钮显示第二页。现在,当我单击浏览器的后退按钮时第一页的下拉菜单必须保留之前填写的数据。只有第一个下拉菜单保留数据,其他 3 个下拉菜单不会填充之前选择的数据。为此,我在单击表单提交时设置 cookie,如下所示:

this.SetCookieForPriceGuide = function () {
        document.cookie = "VehicleMake=" + $("#VehicleMake").val();
        document.cookie = "VehicleYear=" + $("#VehicleYear").val();
        document.cookie = "VehicleModel=" + $("#VehicleModel").val();
        document.cookie = "VehicleDamage=" + $("#VehicleDamage").val();

    };

按钮单击事件中的 SetCookieForPriceGuide 和后退按钮上调用的加载函数,我尝试按如下方式设置下拉列表值

this.load = function () {
        var VehicleYear = getCookie("VehicleYear");
        var VehicleMake = getCookie("VehicleMake");
        var VehicleModel = getCookie("VehicleModel");
        var VehicleDamage = getCookie("VehicleDamage");
}

getCookie方法如下:

function getCookie(cookieValue) {
    var textValue = cookieValue + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1);
        if (c.indexOf(textValue) == 0) {
            return c.substring(textValue.length, c.length);
        }
    }
    return "";
}

最佳答案

您可以按如下方式设置下拉列表的选定值:

this.load = function () {
    setSelectedValue('ddl_VehicleYearId', getCookie("VehicleYear"), 'defaultValue');
    setSelectedValue('ddl_VehicleMakeId', getCookie("VehicleMake") 'defaultValue');
    setSelectedValue('ddl_VehicleModelId', getCookie("VehicleModel") 'defaultValue');
    setSelectedValue('ddl_VehicleDamageId', getCookie("VehicleDamage") 'defaultValue');
}

function setSelectedValue(dropdownId, cookieValue, defaultValue){
    var element = document.getElementById(dropdownId);
    if(cookieValue) // If cookie has value
        element.value = cookieValue;
    else    // set default value
        element.value = defaultValue;
}

关于javascript - 设置从服务器端加载的后退按钮的下拉值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33479423/

相关文章:

ajax - 从 LazyDataModel#load() 抛出的异常不会被 ExceptionHandler 捕获

Javascript 树搜索算法,返回包含找到的术语及其父项的树的子集

javascript - 使用 javascript 查询字符串

javascript - 使用HTML/Javascript中的Analytics(分析)跟踪 strip 转换

jquery - AJAX 请求如何在 Android 2.0 和 Android 2.2 上工作

jquery - 使用 ajax 填充输入值(Laravel 6)

javascript - 编写可调用对象的 typescript

javascript - AngularJS - 防止提交带有必填字段的表单

javascript - 检测输入中输入的单词和字母,并对具有相同字母的其他元素(div 中的文本)进行排序

javascript - 新的日期函数 JavaScript