Custom Validator for a checkboxlist control – Strange behavior.

Discussion in 'ASP .Net Web Controls' started by Itai, Jul 18, 2004.

  1. Itai

    Itai Guest

    I am attempting to create a Custom Validator client script for a
    checkboxlist control.
    My goal is to limit the total number of selections to be 1 - 5 at
    most.
    My problem is that I get a null reference when I attempt to retrieve
    an object for an individual
    list item, which of course results in an "object required" error
    message.

    Anyone know what to do? tnx in advance

    -Itai.



    Here is the code:


    <HEAD>

    ....


    <script language="JavaScript">

    function ChkMusicTasteSelection(source, arguments) {

    var t = 0;

    for(var i = 0; i < 31; i++) {

    var chkbx = document.all.item("musicTaste_" + i);

    // document.write(chkbx) --> null (getElementById() produces the
    same effect)

    if(chkbx.checked == true){
    t++;
    }
    }

    if((t <= 5) && (t >= 1)) {

    arguments.IsValid = true;
    }
    else {
    arguments.IsValid = false
    }
    }
    }

    </script>

    </HEAD>


    <body>
    <form id="Form1" method="post" runat="server">

    ...


    <TD style="HEIGHT: 188px"><asp:checkboxlist id="musicTaste"
    runat="server"
    Width="640px" RepeatColumns="5" RepeatDirection="Horizontal">

    <asp:ListItem Value="1">60's</asp:ListItem>
    <asp:ListItem Value="2">70's</asp:ListItem>
    <asp:ListItem Value="3">80's</asp:ListItem>

    ...




    Rendered Output: (browser ie6sp1)


    <TD style="HEIGHT: 188px"><table id="musicTaste" border="0"
    style="width:640px;">
    <tr>
    <td><input id="musicTaste_0" type="checkbox" name="musicTaste:0"
    /><label for="musicTaste_0">60's</label></td>
    <td><input id="musicTaste_1" type="checkbox" name="musicTaste:1"
    /><label for="musicTaste_1">70's</label></td>
    <td><input id="musicTaste_2" type="checkbox" name="musicTaste:2"
    /><label for="musicTaste_2">80's</label></td>

    ...
     
    Itai, Jul 18, 2004
    #1
    1. Advertising

  2. Itai

    Teemu Keiski Guest

    Re: Custom Validator for a checkboxlist control - Strange behavior.

    Hi,

    first of all, the code for client-side validation function had one closing
    curly brace too much on the end of the function. Second that do you have 30
    or 31 ListItems on CheckBoxList? Note that indexing starts for ids at zero,
    so could it be that the loop should be:

    ///
    for(var i = 0; i < 30; i++) {
    ....
    }
    ///

    And third, I used just this for referencing each individual checkbox:

    ///
    var chkbx = document.all["musicTaste_" + i];
    ///

    but this worked equally:

    ///
    var chkbx = document.getElementById("musicTaste_" + i);
    ///

    So therefore, do check your loop with extra care (and remove the extra
    closing curly brace at the end of the function). If you can't otherwise get
    what it tries to look for, put

    ///
    alert(chkbx.id);
    ///

    right after the reference for the CheckBox is acquired so that you'löl see
    what it tries to look for.

    --
    Teemu Keiski
    MCP, Microsoft MVP (ASP.NET), AspInsiders member
    ASP.NET Forum Moderator, AspAlliance Columnist
    http://blogs.aspadvice.com/joteke




    "Itai" <> wrote in message
    news:...
    > I am attempting to create a Custom Validator client script for a
    > checkboxlist control.
    > My goal is to limit the total number of selections to be 1 - 5 at
    > most.
    > My problem is that I get a null reference when I attempt to retrieve
    > an object for an individual
    > list item, which of course results in an "object required" error
    > message.
    >
    > Anyone know what to do? tnx in advance
    >
    > -Itai.
    >
    >
    >
    > Here is the code:
    >
    >
    > <HEAD>
    >
    > ...
    >
    >
    > <script language="JavaScript">
    >
    > function ChkMusicTasteSelection(source, arguments) {
    >
    > var t = 0;
    >
    > for(var i = 0; i < 31; i++) {
    >
    > var chkbx = document.all.item("musicTaste_" + i);
    >
    > // document.write(chkbx) --> null (getElementById() produces the
    > same effect)
    >
    > if(chkbx.checked == true){
    > t++;
    > }
    > }
    >
    > if((t <= 5) && (t >= 1)) {
    >
    > arguments.IsValid = true;
    > }
    > else {
    > arguments.IsValid = false
    > }
    > }
    > }
    >
    > </script>
    >
    > </HEAD>
    >
    >
    > <body>
    > <form id="Form1" method="post" runat="server">
    >
    > ...
    >
    >
    > <TD style="HEIGHT: 188px"><asp:checkboxlist id="musicTaste"
    > runat="server"
    > Width="640px" RepeatColumns="5" RepeatDirection="Horizontal">
    >
    > <asp:ListItem Value="1">60's</asp:ListItem>
    > <asp:ListItem Value="2">70's</asp:ListItem>
    > <asp:ListItem Value="3">80's</asp:ListItem>
    >
    > ...
    >
    >
    >
    >
    > Rendered Output: (browser ie6sp1)
    >
    >
    > <TD style="HEIGHT: 188px"><table id="musicTaste" border="0"
    > style="width:640px;">
    > <tr>
    > <td><input id="musicTaste_0" type="checkbox" name="musicTaste:0"
    > /><label for="musicTaste_0">60's</label></td>
    > <td><input id="musicTaste_1" type="checkbox" name="musicTaste:1"
    > /><label for="musicTaste_1">70's</label></td>
    > <td><input id="musicTaste_2" type="checkbox" name="musicTaste:2"
    > /><label for="musicTaste_2">80's</label></td>
    >
    > ...
     
    Teemu Keiski, Jul 19, 2004
    #2
    1. Advertising

  3. Itai

    Itai Itai Guest

    Re: Custom Validator for a checkboxlist control - Strange behavior.

    But of (by one) course…

    tnx very much...

    -Itai



    *** Sent via Developersdex http://www.developersdex.com ***
    Don't just participate in USENET...get rewarded for it!
     
    Itai Itai, Jul 22, 2004
    #3
  4. Itai

    Itai Itai Guest

    But of (by one) course…

    tnx very much...

    -Itai



    *** Sent via Developersdex http://www.developersdex.com ***
    Don't just participate in USENET...get rewarded for it!
     
    Itai Itai, Jul 22, 2004
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. JD
    Replies:
    5
    Views:
    11,737
    NetArchitect
    Aug 8, 2007
  2. Patrick.O.Ige
    Replies:
    5
    Views:
    19,192
    Patrick.O.Ige
    Jun 19, 2005
  3. Replies:
    2
    Views:
    394
  4. Itai
    Replies:
    0
    Views:
    95
  5. Itai
    Replies:
    2
    Views:
    152
    Itai Itai
    Jul 22, 2004
Loading...

Share This Page