根据页面上的网址编辑复选框

时间:2014-09-28 19:56:47

标签: javascript php jquery checkbox

我一直在用一些听起来很简单的东西挣扎几个小时。 我所拥有的是一个复选框列表,如果选中一个复选框,页面网址将会更改(保存过滤器选项,以便您可以将该网址共享到过滤器)。当用户想要返回时,除了一点之外它完美地工作。应取消选中复选框。

使用jQuery

setBoxes()是函数;

我试过了:

function pageLoad() {
   setBoxes();
}

$(document).ready(function(){
   setBoxes();
}

我也添加了

 window.onunload = function(){};

但这些解决方案都没有奏效(该功能没有运行,我查了一下)。

之后我想我可以用php做这个(获取数组的url,如果在数组echo中检查),但php不会再运行(我猜它已兑现)。

我有什么选择可以尝试因为我真的无法解决这个简单的问题。

因为我的代码非常大,我提出了一个非常小的http://jsfiddle.net/yzoztp05/1/情况示例,更新了jsfiddle中的url被阻止,因此它不能完全正常工作。

为了使情况更加清晰,我制作了一段视频https://www.youtube.com/watch?v=jaSc1fmaJD4&feature=youtu.be

设置复选框的代码

//convert the url to array
function getQueryVariable(variable)
{
       var query = window.location.search.substring(1);
       var vars = query.split("&");
       for (var i=0;i<vars.length;i++) {
               var pair = vars[i].split("=");
               if(pair[0] == variable){return pair[1];}
       }
       return(false);
}

// Set the checkboxes to checked if they are in the array
function setBoxes()
{
    var prijsUrl = getQueryVariable("prijs");
    // first set all checkboxes on unchecked
    $('.prijsFilterBox').prop('checked', false);
    alert("Loaded");
    if(prijsUrl != false)
    {           
        var res = prijsUrl.split("-");

        for(var i = 0; i < res.length; i++ )
        {
            $('.prijsFilterBox[value='+res[i]+']').prop('checked', true);
            console.log("prijs = "+res[i]);
        }
    }
    else
    {
        console.log("prijs = null");
    }
}

如果我刷新页面,它会起作用,但当用户按下后退按钮时它不会运行。如果它无法在页面上运行javascript,我将尝试使用php创建一个不同的脚本。

TLDR 如何在页面背面(所有浏览器)运行jquery函数?

1 个答案:

答案 0 :(得分:1)

有可能(并且我认为很多人正在使用这种方式)拥有每500毫秒调用一次的timeOut函数来检查URL是否已更改,而不是使用&#39;?&#39;使用哈希&#39;#&#39;因此用户始终在同一页面上,您可以捕获URL更改。

如果你需要坚持&#39;?&#39; ,也许你可以用window.onbeforeunload函数做点什么。