单击复选框时重定向

Redirect when checkbox is clicked

本文关键字:重定向 复选框 单击      更新时间:2024-04-15

请注意,我的问题不是这个问题的重复

当用户点击带有复选框的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;
}

现在它起作用了。