如何将匿名字符串数组传递给JavaScript函数?

时间:2010-04-05 17:48:02

标签: .net asp.net javascript jquery

我想将一个控件ID的数组传递给javascript脚本函数,以便切换控件的启用状态。

例如,在C#中,它就像这样:

func(false, new[] { "Control1", "Control2", "Control3" });

在该功能中,我想找到相应的控件并禁用/启用它们。对于一个控件,我接下来这样做:

<script type="text/javascript" language="javascript">
    function switchControls(value, arr) {
        for (var n = 0; n < array.length; n++)
            document.getElementById([n]).disabled = value;
    }
</script>

<asp:CheckBox runat="server"
     onclick="switchControls(this.checked,
        [
            '<%= Control1.ClientID %>',
            '<%= Control2.ClientID %>'
        ])" 
     Text="Take?" />

如何正确实施?我有没有使用jQuery?

3 个答案:

答案 0 :(得分:3)

不需要jQuery(或任何其他库)。

看起来你的代码会通过一两个修改来完成这个技巧:

<script type="text/javascript">
    function switchControls(value, arr) {
        for (var n = 0; n < arr.length; n++){
            document.getElementById(arr[n]).disabled = value;
        }
    }
</script>  

只要您的ASP语句传入一个布尔值和一组ID(它看起来已经存在,但我不熟悉ASP),它应该可以工作。例如,您的onClick可以这样调用switchControls

switchControls(true, ['foo','bar','baz']);

答案 1 :(得分:2)

你没有“有”使用jQuery,但使用它有点酷:)

function checkme(arr){
   if($.isArray(arr)){
     $.each(arr, function(){
       var currentState = this.attr('disabled');
       if(currentState == 'disabled' || currentState == 'true'){
          this.removeAttr('disabled');           
       }
       else{
          this.attr('disabled', 'disabled');
       }
     });
   }
}

用法:checkme([$("#someid"), $("#anotherid"), $("#anotherid")]);

答案 2 :(得分:0)

<script type="text/javascript" language="javascript">
    function toggleControls(value) {
        $('.toggle').each(function() {
            if (value) {
                $(this).removeAttr('disabled');

            }
            else {
                $(this).attr('disabled', 'true');
            }
        });
    }
</script>

<asp:CheckBox runat="server" onclick="toggleControls(this.checked)" Text="Take?" />
<asp:TextBox runat="server" CssClass="toggle" />