重新加载页面后,未检查Javascript复选框

时间:2013-02-22 06:41:59

标签: javascript checkbox

我的HTML为:

===================================

<input type="checkbox" id="Red" onclick="changeURL('WineType', 'Red')"> Red (30499)
<input type="checkbox" id="White" onclick="changeURL('WineType', 'White')"> White (22840)

===================================

首先我调用changeURL()然后调用isChecked()函数。

但是当两个函数都被执行时,复选框仍未选中。

===================================

function changeURL(fieldname, facetname) {
    var ref= window.location.href ;
    if(fieldname == "WineType") {
        var matchPrice = location.href.match(/&fq=%7B%21tag%3Ddt1%7DWineType%3A/);

        if(matchPrice == '&fq=%7B%21tag%3Ddt1%7DWineType%3A' )
        {
            var ndStart = ref.indexOf("WineType%3A%28");
            var ndEnd = ref.indexOf("%29",ndStart );        
            ref = ref.substring(0,ndStart+12) + ref.substring(ndStart+12, ndEnd) +" OR " +facetname + ref.substring(ndEnd);
        }
        else {
            ref = ref + "?&fq=%7B%21tag%3Ddt1%7DWineType%3A%28"+facetname+"%29";
        }
    }
    window.location.href = ref;
    isChecked(facetname);
};

function isChecked(element)
{
     var field = document.getElementById(element); 
     if (element) { 
          if (field.checked) { 
                document.getElementById(element).checked= false;
          } else { 
                document.getElementById(element).checked= true; 
          } 
     }   
};  

2 个答案:

答案 0 :(得分:0)

使用localStorage并确保每次检查/取消选中时都更新localStorage。无论何时加载页面,您首先检查localStorage,如果它不是空的,则使用该标记检查所有复选框。如果它是空的,则表示首次加载页面或未进行检查。

实施localStorage的最简单方法:Here
这个很棒:Doc

P.S。有些人可能有问题,因为我建议使用w3schools,但对于第一次使用它的人来说,这是localStorage最简单的解决方案和实现

答案 1 :(得分:0)

此处尝试解决方案,并按照以下方式为我工作:
1)我发送了复选框状态和查询字符串 2)当页面重新加载时,我从查询字符串中提取复选框状态,然后相应地设置复选框的状态选中未选中