3

我有几个复选框。当它们中的任何一个被单击/检查并单击搜索按钮时,将获取它们的值并作为查询字符串传递给 url 并刷新页面,返回与传递的查询值匹配的结果。像这样:mysite.com/result.aspx?k="Hospital" OR "Office" OR "Emergency"

我能够在'k ='之后获取值。我将“医院”或“办公室”或“紧急情况”捕获并存储在一个变量中。现在我需要在页面重新加载并忘记控件的先前状态后根据这些值重置复选框的选中状态。我不能再进一步了。有人能帮我吗?

  var checkedOnes=decodeURI(location.href.match(/\&k\=(.+)/)[1]);
        if (value.length == 2) {
            $('input[name="LocType"][value="' + value[1] + '"]').prop('checked', true);
        }  

这就是我捕获复选框值并传递给 URL 的方式:

var checkboxValues = $("input[name=LocType]:checked").map(function() {
        return "\"" + $(this).val() + "\"";}).get().join(" OR ");

    window.location= url+checkboxValues;

    <div class="LocTypeChkBoxesSearch">
    <div class="LocTypeChkBoxes">
        <input name="LocType" type="checkbox" value="Hospital"/>HOSPITALS&#160;&#160;
        <input name="LocType" type="checkbox"  value="Office"/>  PHYSICIAN OFFICES&#160;&#160;
        <input name="LocType" type="checkbox"  value="Emergency"/>EMERGENCY CENTERS&#160;&#160;
        <input name="LocType" type="checkbox"  value="Out-Patient"/>OUT-PATIENT CENTERS&#160;&#160;
        <input name="LocType" type="checkbox" value="Facility"/>FACILITIES
    </div>
    <div class="searchBtnHolder"><a class="searchButton" href="#" type="submit" ><span>GO</span></a></div>
</div>
4

3 回答 3

1

我遇到了同样的问题,我的解决方案是 HTML5 Local Storage。添加收集复选框值的功能

function(){
var data = $('input[name=checkboxName]:checked').map(function(){
        return this.value;
    }).get();
    localStorage['data']=JSON.stringify(data);
}

和 onload 功能来检查复选框

function(){
    if(localStorage&&localStorage["data"]){
        var localStoredData=JSON.parse(localStorage["data"]);
        var checkboxes=document.getElementsByName('checkboxName');
        for(var i=0;i<checkboxes.length;i++){
            for(var j=0;j<localStoredData.length;j++){
                if(checkboxes[i].value==localStoredData[j]){
                    checkboxes[i].checked=true;
                }
            }
        }
        localStorage.removeItem('data');
    }
}

这对我来说很好。

于 2013-07-23T13:05:27.347 回答
0

你不应该为此需要 JavaScript。您可以检查后端代码中的 $_GET 参数,并使用正确的表单元素属性为页面提供服务。

在 PHP 中,例如:

<input name="LocType" type="checkbox" value="Facility" <?php if (isset($_GET['LocType'] && $_GET['LocType'] == 'Facility') { ?> checked="checked" <?php } ?> /> FACILITIES
于 2012-02-27T21:38:01.603 回答
0

尝试这个。

//Split the url parameter value and get all the values in an array
var checkedOnes = decodeURI(location.href.match(/\&k\=(.+)/)[1]).split(" OR ");

//Find all the checkbox with name="LocType" and cache them in local variable
var $checkBoxes = $('input[name=LocType]');

//Loop through the array and find the corresponding checkbox element using filter
$.each(checkedOnes, function(i, val){
    $checkBoxes.filter('value=[' + $.trim(val.replace(/\"/g, '')) +']').prop('checked', true);
});

我拆分的值kOR给出数组中的所有值。接下来,遍历数组并通过匹配其 value 属性找到相应的复选框并将其checked属性设置为trueusingprop方法。

于 2012-02-27T21:35:04.220 回答