Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击复选框时重定向_Javascript_Jquery_Html_Redirect_Checkbox - Fatal编程技术网

Javascript 单击复选框时重定向

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时将其重定向到新页面,但我仍然不知道如何执行此操作,因为当您单击带有复选框的span时,它会提交表单,并且用户重定向到错误的页面

这是我的html:

<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;
}