JavaScript&复选框 - 更有效地存储每个复选框的值?

时间:2015-06-19 03:24:28

标签: javascript jquery checkbox

是否有更有效的方法来存储我的复选框值?

每个复选框都有一个赋值,我想知道是否有更好的方法来存储这些值(destinationoflink1,2,3等)?也许将它们存储为数组并调用它们?...虽然我不确定

HTML页面提取:

    <form>
        <label for="checkbox1">Link #1</label>
        <input type="checkbox" id="checkbox1" value="http://www.destinationoflink1.com">
        <label for="checkbox2">Link #2</label>
        <input type="checkbox" id="checkbox2" value="http://www.destinationoflink2.com">
        <label for="checkbox3">Link #3</label>
        <input type="checkbox" id="checkbox3" value="http://www.destinationoflink3.com">

        <input type="button" value="open links" id="open_link"/>
    </form>

Javascript文件提取(如果有用):

$("#open_link").click(function() {
    performOpenLink();
})

function performOpenLink(){
$("input[type=checkbox]").each(function() {
        if (this.checked) {
            window.open(this.value)
        }
    });
}

2 个答案:

答案 0 :(得分:1)

您可以使用数组

动态生成复选框

修改后的HTML

<form>
    <div id="checkbox_container"></div>    
    <input type="button" value="open links" id="open_link"/>
</form>

修改后的JavaScript

var destinations = [
    {'label': 'Checkbox1', 'value' : 'http://www.destinationoflink1.com'},
    {'label': 'Checkbox2', 'value' : 'http://www.destinationoflink2.com'},
    {'label': 'Checkbox3', 'value' : 'http://www.destinationoflink3.com'}
];

$(function(){
    // document onReady

    for (var i=0; i<destinations.length; i++){
        // add the label:
        $('#checkbox_container').append('<label for="' + destinations[i].label + '">Link #' + i + '</label>');

        // add the checkbox:
        $('#checkbox_container').append('<input type="checkbox" id="'+ destinations[i].label+'" value="' + destinations[i].value + '" >');
    }
});

$("#open_link").click(function() {
    performOpenLink();
});

function performOpenLink(){
    $("input[type=checkbox]").each(function() {
        if (this.checked) {
            window.open(this.value)
        }
    });
}

这将循环遍历数组,并根据每个数组项的属性构建labelchecklist html。通过将值放入数组中,您可以更轻松地稍后添加(或删除)新的清单值

这是 jsFiddle

更新:我修复了我在代码中留下this的问题。替换为destinations[i]

答案 1 :(得分:0)

这是另一种方法......

session_start();
if (isset($_SESSION['level']) && (int) $_SESSION['level'] === 1) {
    echo '<a>Link for admin</a>';
}

这是 fiddle

它不会在chrome中打开多个标签,但它在firefox中完美运行(对我来说是v38.0)..