获取URL附加的复选框值

Get Checked Box Value for URL Append

本文关键字:复选框 URL 获取      更新时间:2024-01-23

我有两个脚本。一个获取复选框值,另一个将附加我的<a>标记。两者都可以单独工作,但我需要将"str"的值放在我的url附加脚本中,而我似乎无法使其工作。

我的获取复选框看起来像:

<script>
var checked, checkedValues = new Array();
$(document).on('change', 'input[type=checkbox]', function(e) {
checked = $('input[type=checkbox]:checked');
checkedValues = checked.map(function(i) { return $(this).val() }).get();
$('.aaa').html(checked.length + ' are checked');
if (checked.length) {
    var str = checkedValues.join();
});
</script>

我的第二个附加url的脚本如下:

<script>
$('.nextquestion').attr('href', function() {
this.href = this.href + '&answers=+str+';
 });
</script>

我正在尝试将"str"的值放在我的url中。有人能帮忙吗?

可能str在第二个脚本的函数中不可访问,您可能需要将其设置为全局变量

var str
if (checked.length) {
    str = checkedValues.join();
});
$('.nextquestion').attr('href', function() {
   //here first check if str has value
   this.href = this.href + '&answers=+str+';
 });

尝试使用:

window.history.replaceState();

以下是我为此使用的一些辅助功能:

var addUrlParam = function (param, value) {
    var originalUrlArray = window.location.href.replace(/#/g, "").replace(/!/g, "").split("?");
    var query = originalUrlArray[1] || false;
    var vars = query ? query.split("&").clean("") : [];
    vars.push(param + "=" + value);
    var newQueryString = vars.join("&");
    var newUrl = originalUrlArray[0] + "?" + newQueryString;
    window.history.replaceState(null, null, newUrl);
};
var updateUrlParam = function (paramToUpdate, newValue) {
    var originalUrlArray = window.location.href.replace(/#/g, "").replace(/!/g, "").split("?");
    var query = originalUrlArray[1];
    var vars = query.split("&");
    var newVars = vars.slice();
    var matches = vars.searchFor(paramToUpdate);
    if (matches) {
        for (var i = 0; i < matches.length; i++) {
            var pair = vars[matches[i]].split("=");
            if (pair[0] === paramToUpdate) {
                pair[1] = newValue;
                newVars[matches[i]] = pair.join("=");
            }
        }
        var newUrl = originalUrlArray[0] + "?" + newVars.join("&");
        window.history.replaceState(null, null, newUrl);
    } 
};