我有几个复选框。当单击/选中任何一个并单击搜索按钮时,将获取其值并作为查询字符串传递给URL并刷新返回与传递的查询值匹配的结果的页面。 像这样:mysite.com/result.aspx?k="Hospital“或”办公室“或”紧急“
我能够在'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  
<input name="LocType" type="checkbox" value="Office"/> PHYSICIAN OFFICES  
<input name="LocType" type="checkbox" value="Emergency"/>EMERGENCY CENTERS  
<input name="LocType" type="checkbox" value="Out-Patient"/>OUT-PATIENT CENTERS  
<input name="LocType" type="checkbox" value="Facility"/>FACILITIES
</div>
<div class="searchBtnHolder"><a class="searchButton" href="#" type="submit" ><span>GO</span></a></div>
</div>
答案 0 :(得分:1)
我遇到了同样的问题,我的解决方案是HTML5本地存储。 为colect复选框值添加函数
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');
}
}
这对我来说很好。
答案 1 :(得分: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);
});
我将k
的值除以OR
,这将给出数组中的所有值。接下来,遍历数组并通过匹配其value属性找到相应的复选框,并使用checked
方法将其true
属性设置为prop
。
答案 2 :(得分:0)
你不应该为此而需要JavaScript。您可以检查后端代码中的$ _GET参数,并使用正确的表单元素属性为页面提供服务。
在PHP中,例如:
<input name="LocType" type="checkbox" value="Facility" <?php if (isset($_GET['LocType'] && $_GET['LocType'] == 'Facility') { ?> checked="checked" <?php } ?> /> FACILITIES