【发布时间】:2016-05-26 17:17:30
【问题描述】:
我的情况:
我正在开发一个购物车应用程序,它包含一些过滤器:
-
按颜色过滤(复选框)
-
按样式过滤(复选框)
在选择一些颜色时,我的网址变成这样:
http://example.com/women/try.php?color=10,11,12,13
我的问题:
-
在取消选中某些颜色时,相关参数不会从 url 中清除。
-
另外,当我选择一些样式时,我希望 url 是这样的:
http://example.com/women/try.php?color=10,11,12,13&style=1,2,3
请帮助我如何实现此功能。
我的代码:
<?php
$colors = $_GET['color'];
$sel_colors = explode(',', $colors);
foreach($sel_colors as $k=>$v) {
$c['check'][$v] = $v;
}
for($i=10;$i<=14;$i++) { ?>
<input type="checkbox" name="color[]" value="<?php echo $i; ?>" <?php echo $check_value = ($c['check'][$i]) ? 'checked' : '0'; ?> >
<label>Color #<?php echo $i.'--'.$check_value; ?></label><?php
}
?><br/><br/><br/>
<input type="checkbox" name="type" value="1" >
<label>style #1</label>
<input type="checkbox" name="type" value="2" >
<label>style #2</label>
<input type="checkbox" name="type" value="3" >
<label>style #3</label>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js" ></script>
<script type="text/javascript">
var baseUrl = 'http://website/women/try.php?color=';
$(document).ready(function () {
// listen to change event (customize selector to your needs)
$('input[type=checkbox]').change(function (e) {
e.preventDefault();
if ($(this).is(':checked')) {
// read in value
var queryString = $(this).val();
// loop through siblings (customize selector to your needs)
var s = $(this).siblings();
$.each(s, function () {
// see if checked
if ($(this).is(':checked')) {
// append value
queryString += ',' + $(this).val();
}
});
// jump to url
window.location = baseUrl + queryString;
}
});
});
</script>
【问题讨论】:
标签: javascript php jquery checkbox