繁体   English   中英

保持下拉列表选择值刷新

[英]Keep dropdownlist selected value on refresh

我使用的是CakePHP 1.2.4,并且在搜索表单中有两个搜索过滤器以这种方式进行交互:一个下拉列表中填充了国家/地区,另一个ddl中填充了在第一个ddl中选择的国家/地区的状态。

这是用ajax完成的

当页面在搜索表单中使用时刷新时,我需要调用ajax函数,否则不会再次填充状态ddl。

这些下拉列表也用在其他类型的视图中。 例如,在edit_address.ctp页面上,打开页面时选择的值将是保存在数据库中的值。

但是,在edit_address.ctp页面上,我不需要在刷新(或onload)时更新值,因为除非用户手动更改国家/地区,否则我不希望更新状态。

    $('.ajaxSelect').each(function(){
    $(this).change(function(){
        updateSelect($(this));
    });
    //call function on load only for filters in a search form
    if($(this).closest('.frmSearch').length > 0){
        if($(".ajaxSelect option:selected").text() != ""){
            $(this).change(updateSelect($(this))).change();
        }
    }
})

此功能可以正常使用,但在edit_address.ctp中,如果用户更改国家(不保存)并刷新页面,则状态会重置为与默认国家/地区匹配,但所选国家/地区仍然是刷新之前选择的国家/地区,因此各州不再与该国匹配。

这是国家/地区过滤器的示例

<select id="AddressCountryId" class="ajaxSelect" linked="AddressRegionId" method="getRegion" name="data[Address][country_id]">

和状态过滤器

<select id="AddressRegionId" name="data[Address][region_id]">

刷新时var_dump($ _ POST)为空,因此我无法通过这种方式在地址控制器中访问选定的值。

我可以想到的另一件事是,在上面的ajax函数中,通过从模型中调用方法来检查视图中的所选状态是否与所选国家/地区匹配。 这是正确的方法吗? 我应该在ajax控制器中创建一个新函数来访问模型函数吗?

简而言之,我希望每当选定值不来自数据库时(除非用户手动选择另一个国家),都用ajax更新州列表(除非用户手动选择其他国家/地区)

我可能缺少一些关键概念。 随意询问精度,可能会造成混淆,谢谢


编辑:我猜这可能不是何时进行ajax调用的问题,而是如何在刷新后保持下拉列表的值及其选择的值(还编辑了标题)

HTTP是无状态的 因此,当您刷新浏览器时,它是一个新的HTTP请求,并且不知道下拉菜单中的所选项目是什么。

一种可能的解决方法是将状态存储在某种持久性介质中。 会话变量,数据库是您可以想到的两个选项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM