通过onclick复选框执行jQuery函数时出现问题

时间:2020-09-01 17:15:25

标签: javascript jquery ajax

我有以下内容:

<input type="checkbox" value="Spanish" <?php if($_GET['set'] == 'Spanish') echo 'checked'; ?> onclick="filter(this)" id="spanish">
<input type="checkbox" value="English" <?php if($_GET['set'] == 'English') echo 'checked'; ?> onclick="filter(this)" id="english">
<input type="checkbox" value="French" <?php if($_GET['set'] == 'French') echo 'checked'; ?> onclick="filter(this)" id="french">

function get_url() {
    var urlPrefix   = '<?php echo site_url('home/language?'); ?>'
    var urlSuffix = "";
    var slectedCategory = "";

    $('#spanish:checked').each(function() {
        slectedCategory = $(this).attr('value');
    });

    $('#english:checked').each(function() {
        slectedCategory = $(this).attr('value');
    });

    $('#french:checked').each(function() {
        slectedCategory = $(this).attr('value');
    });

    urlSuffix = "set="+slectedCategory;
    var url = urlPrefix+urlSuffix;
    return url;
}
function filter() {
    var url = get_url();
    window.location.replace(url);
}

出现的问题是,当我选择第一个选项(西班牙语)时,它会起作用,如果我选中第二个选项,它也会起作用(英语)。但是,如果我尝试再次检查上一个选项(西班牙语),则无法使用。

那会是什么?看来它只能通过下降来起作用。

1 个答案:

答案 0 :(得分:0)

之所以出现此问题,是因为您没有使用单击的复选框的值在get_url函数中生成新的url。像下面那样替换您的js函数。它将起作用。

function get_url(elem) {
    var urlPrefix   = '<?php echo site_url('home/language?'); ?>'
    var urlSuffix = "";
    var slectedCategory = "";

    slectedCategory = $(elem).attr('value');

    urlSuffix = "set="+slectedCategory;
    var url = urlPrefix+urlSuffix;
    return url;
}
function filter(elem) {
    var url = get_url(elem);
    window.location.replace(url);
}
相关问题