如何在回发后保留下拉列表中的选定值?

时间:2012-05-14 13:50:30

标签: javascript jquery ajax cascadingdropdown

$("#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']));
            });
        });
    }
});

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

2 个答案:

答案 0 :(得分:0)

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

我在我工作的地方使用ASP.net,因此每个下拉列表的值都有一个服务器端属性。然后,当页面呈现时,我将属性的值打印到我的JavaScript代码。您需要使用JavaScript代码将属性selected='selected'添加到页面加载时要选择的选项。

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

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

答案 1 :(得分:0)

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

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

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

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

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