2014-09-28 94 views
0

我一直在努力几个小时,听起来很简单。 我有一个复选框列表,如果复选框被选中,页面URL将会改变(保存一个过滤器选项,所以你可以共享URL到过滤器)。除了一点,当用户想要回去时,它完美地工作。复选框应该取消选中。基于网页编辑复选框

使用jQuery

setBoxes()是函数;

我想:

function pageLoad() { 
    setBoxes(); 
} 

而且

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

我也加入

window.onunload = function(){}; 

但是这些解决方案的工作(功能不运行,我检查) 。

之后,我想我可以做到这一点与PHP(获取网址到一个数组,如果在数组中回声检查),但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函数?

+0

请添加一些代码来说明您的问题 – Steve 2014-09-28 19:59:42

+0

即时制作视频,将很快添加 – 2014-09-28 20:18:36

+1

视频没有帮助,'setBoxes()'的代码在哪里?它没有做什么? – charlietfl 2014-09-28 20:34:34

回答

1

它有可能(我认为有很多人使用这种方式)拥有timeOut函数,每500ms调用一次,检查URL是否发生了变化,但不是使用'?'使用散列'#',所以用户总是在同一页面上,你可以捕获URL更改。

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

+0

最终使用#散列作品很好谢谢 – 2014-09-30 14:10:56