【问题标题】:How to preserve selected value in drop-down list after postback?回发后如何在下拉列表中保留所选值?
【发布时间】:2012-05-14 13:50:29
【问题描述】:
$("#county_id").change(function() {
    $("#vice_county_id").html("<option value=\"\">-- Select One --</option>");
    var co_id = $(this).val();
    if(co_id != 0) {
        $.getJSON('./php/includes/vice_county_web_service.php?co_id=' + co_id,function(data) {   
            $.each(data, function() {
                $("#vice_county_id").append($("<option></option>").val(this['vice_county_id']).html(this['vice_county_name']));
            });
        });
    }
});

大家好, 我有上面的代码,用于根据另一个下拉列表中的选择加载选项。它工作得很好,但为了完成这个,我试图让它变得粘稠。 IE。如果表格已发布并且县已经选择了一个值,则副县会预加载相关选项。基本上在加载时触发 .change 功能。我已经尝试过 .load 和 triggerhandler 功能,但它似乎不起作用。有任何想法吗??谢谢。

【问题讨论】:

    标签: javascript jquery ajax cascadingdropdown


    【解决方案1】:

    据我所知,为了预填充表单,您需要使用服务器端代码。你说用户在某处发布了他的代码,但你没有说表单发布是如何处理的。

    我在我工作的地方使用 ASP.net,所以我会为每个下拉列表的值提供一个服务器端属性。然后,当页面呈现时,我将属性的值打印到我的 JavaScript 代码中。您需要让您的 JavaScript 代码将属性 selected='selected' 添加到您希望在页面加载时选择的选项。

    更新: 听起来您是在说您选择下拉菜单 1,然后自动填充下拉菜单 2 的选项。听起来问题是在回发后无法保留下拉列表 2,因为它的选项是在页面加载之后填充的(通过 AJAX)。我相信您的问题的解决方案是在您通过 AJAX 成功获取下拉选项时运行的代码中设置 selected 属性。

            $.each(data, function() {
                $("#vice_county_id").append($("<option></option>").val(this['vice_county_id']).html(this['vice_county_name']));
                //Check if the option being added was previously selected.
            });
    

    【讨论】:

    • 谢谢你的正确,我就是这样做的。粘性功能在所有字段的表单上都可以完美运行。 County_id 在 paghe 重新加载时被保留我似乎无法让 jquery 触发 ajax 调用来填充vice_county_id 组合框。欢呼
    【解决方案2】:

    使用 Cookie 存储下拉更改事件的值。

    当表单加载时,使用相同的 cookie 来检索值并向用户显示他选择的内容。

    但不建议为此任务维护 cookie。

    如果是 JSP 页面,您可以使用 JSTL。

    Cookie 创建指南 http://www.quirksmode.org/js/cookies.html

    【讨论】:

      猜你喜欢
      • 2011-01-30
      • 1970-01-01
      • 1970-01-01
      • 2014-05-16
      • 1970-01-01
      • 1970-01-01
      • 2016-12-10
      • 1970-01-01
      • 2015-05-05
      相关资源
      最近更新 更多