如何在javascript中存储多个相关值?

时间:2014-02-03 04:37:58

标签: javascript

我在页面中有一组复选框,每个复选框都与文本框相关联。

如果取消选中该复选框并在其中放入默认值(每个文本框具有不同的默认值),我需要做的是禁用文本框。

现在我编写了一个接受checkboxId,textboxId和默认值的函数,该函数名为onClick of the复选框。

有没有办法在javascript中静态存储这些信息(checkBoxId,textBoxId,defaultValue)(如地图或其他东西),这样我的函数不需要任何参数,可以在页面上调用onLoad?

1 个答案:

答案 0 :(得分:2)

这是我之前做的事情:

<input type="checkbox" id="sample">
<input data-requires="sample" data-default="Default">

function applyControls(){
    $("input[data-requires]").each(function(){
        var target = $(this);
        $("#" + target.data("requires")).click(function(){
            if(this.checked){
                target.prop("disabled", false);
            }else{
                target.prop("disabled", true).val(target.data("default"));
            }
        });
    });
}
applyControls();

注意:此代码是用jQuery编写的。您可以通过使用本机方法替换jQuery方法,轻松将其转换为本机代码。

演示:http://jsfiddle.net/DerekL/VnHAc/

现在,您不必创建任何地图或对象来存储这些关系(对于单个文本框,您甚至不需要id!)通过使用data-*属性,您可以每次添加连接时都不必修改“地图”。事实上,这是在HTML5中实现它的首选方式 1

1 https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Using_data_attributes