Javascript 单击复选框时重定向
请不要重复我的问题。 我需要在用户单击带有复选框的span时将其重定向到新页面,但我仍然不知道如何执行此操作,因为当您单击带有复选框的span时,它会提交表单,并且用户重定向到错误的页面 这是我的html:Javascript 单击复选框时重定向,javascript,jquery,html,redirect,checkbox,Javascript,Jquery,Html,Redirect,Checkbox,请不要重复我的问题。 我需要在用户单击带有复选框的span时将其重定向到新页面,但我仍然不知道如何执行此操作,因为当您单击带有复选框的span时,它会提交表单,并且用户重定向到错误的页面 这是我的html: <span class="niceCheck nstcheck active" onclick="check_checked()"> <input name="p[473][]" value="Stolovaia" type="checkbox" checked="
<span class="niceCheck nstcheck active" onclick="check_checked()">
<input name="p[473][]" value="Stolovaia" type="checkbox" checked="checked">
</span>
我还尝试了执行onclick=“check_checked();return false;”
和window.location.replace
,但仍然没有任何进展
当我开机时:
http://m.resolute.loc/shop/category/dlia-doma/stoly/dereviannye/vkakuykomnatu-stolovay-filtr
点击复选框后,我的url是(这是stange,但该站点正在添加$\u GET到他自己的url,所以我尝试将其剪切并重定向到clear page):
但我的baseUrl等于:
http://m.resolute.loc/shop/category/dlia-doma/stoly/dereviannye
对于这么少的代码来说,有很多令人惊讶的问题 首先,不需要所有的
lastIndexOf('/')
和substr
废话,只需设置location.href='..'
和浏览器将轻松地将您带到一个文件夹中-并且在您已经位于根目录的边缘情况下,它不会中断;)
接下来,如果我点击复选框并点击空格来切换它,你的代码将不会触发。相反,您应该使用
包装该框,并在复选框本身上使用onChange
事件处理程序
最后是根本问题:您的函数有
返回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>
问候。我以完全不同的方式解决了我的问题。我决定在提交操作时将我的检查代码添加到,如下所示:
$('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;
}
现在它可以工作了。不要使用内联javascript/onclick属性单击范围(首先应该是标签),或者复选框本身不提交表单;如果发生这种情况,那么你必须准备好额外的JS代码,你不让我们知道。@Alex,你是什么意思?@mrVG我的意思是,不要使用onclick
attributes可能重复我尝试过的onChange=“return check_checked();”
,但它仍然提交表单而不是重定向。对不起,但是它仍然提交表单而不是重定向到baseUrl。我已经更新了我的响应。您可能在e.preventDefault(;)
中犯了错误,应该是e.preventDefault()代码>,但我仍然无法重定向。是的,这是一个错误,对不起,请您提供一些更具代表性的代码?我已经更新了我的代码,并显示了我收到的url和我需要的url。
<span class="niceCheck nstcheck active" onclick="return check_checked(event)">
<input name="p[473][]" value="Stolovaia" type="checkbox" checked="checked">
</span>
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;
}
$('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;
}