单击复选框时重定向
Redirect when checkbox is clicked
请注意,我的问题不是这个问题的重复
当用户点击带有复选框的span时,我需要将其重定向到新页面,但我仍然不知道如何做到这一点,因为当你点击带有复选复选框的span'时,它会提交表单,用户会重定向到错误的页面。
这是我的html:
<span class="niceCheck nstcheck active" onclick="check_checked()">
<input name="p[473][]" value="Stolovaia" type="checkbox" checked="checked">
</span>
以下是我尝试重定向用户的方式:
function check_checked() {
if (window.location.href.indexOf('?') != -1) {
var queryPart = window.location.href.indexOf('?');
var baseUrl = window.location.href.substr(0, queryPart);
window.location.href = baseUrl;
return false;
} else {
var lastSlash = window.location.href.lastIndexOf('/');
var baseUrl = window.location.href.substr(0, lastSlash);
window.location.href = baseUrl;
return false;
}
}
我也试过做onclick="check_checked(); return false;"
和window.location.replace
,但仍然没有进展。
当我打开时:
http://m.resolute.loc/shop/category/dlia-doma/stoly/dereviannye/vkakuykomnatu-stolovay-filtr
点击复选框后,我的url是(这很奇怪,但这个网站正在通过他自己的方式将$_GET添加到url中,所以我试图将其剪切并重定向到清除页面):
http://m.resolute.loc/shop/category/dlia-doma/stoly/dereviannye?order=rating&user_per_page=18&lp=1199&rp=74155
但是我的baseUrl等于:
http://m.resolute.loc/shop/category/dlia-doma/stoly/dereviannye
对于如此少的代码来说,存在着数量惊人的问题。。。
首先,不需要lastIndexOf('/')
和substr
这些废话,只需设置location.href = '..';
,浏览器就会轻松地打开一个文件夹,而且在你已经处于根目录的边缘情况下,它不会崩溃;)
接下来,如果我Tab到复选框并点击<label>
来包装复选框,并在复选框本身上使用onChange
事件处理程序。
最后,根本问题是:您的函数有return false;
,但处理程序没有传播它。您需要onChange="return check_checked();"
来传递值。
您必须捕获事件并防止默认,而且我认为您使用了错误的我们用javascript重定向。
将事件传递给onclick函数:
<span class="niceCheck nstcheck active" onclick="return check_checked(event)">
<input name="p[473][]" value="Stolovaia" type="checkbox" checked="checked">
</span>
修改你的js代码:
function check_checked(e) {
e.preventDefault();
var lastSlash = window.location.href.lastIndexOf('/');
var baseUrl = window.location.href.substr(0, lastSlash);
window.location= baseUrl;
return false;
}
谨致问候。
我用完全不同的方式解决了我的问题。我决定将我的检查代码添加到on submit
操作中,如下所示:
$('form#catalogForm').on('submit', function() {
if (window.location.href.indexOf('?') != -1) {
var queryPart = window.location.href.indexOf('?');
var baseUrl = window.location.href.substr(0, queryPart);
} else {
var lastSlash = window.location.href.lastIndexOf('/');
var baseUrl = window.location.href.substr(0, lastSlash);
}
window.location.href = baseUrl;
return false;
}
现在它起作用了。
- 不正确的复选框重定向
- 高级表单提交-单选、复选框和重定向
- 单击复选框时重定向
- 如何在提交时防止粘性复选框重置?(一页上有多个表格)
- HTML5/Javascript验证复选框提交URL重定向
- 一次选中4个复选框,然后将页面重定向到新页面
- 重定向到不同的页面,基于选中的复选框组合
- 将复选框重置为基于先前复选框的页面加载状态's状态
- 使用 jQuery 重定向复选框
- j查询单击事件重置复选框的检查属性
- 动态复选框被重置
- 从更新下拉框重置复选框
- 根据从弹出窗口中选择的复选框,重定向
- 重定向取决于选中哪个复选框
- JQGRID-保持复选框选择状态-页面刷新/重定向/重新加载
- 如何重置复选框、搜索文本框和选择列表
- 复选框选择时的表单重定向
- 在javascript和php中单击TAB菜单时清除或重置复选框
- 当点击一行时重定向到页面,当点击复选框时启用按钮.'
- 重置复选框值 MVC 5 中的 AJAX 开始表单响应