Hi Miguel,

you could use a global counter.
e.g.

     var themesCounter = 0;
     $('#AddTheme').bind('click', function(){
        ...
         $theme.append('<input type="hidden"
name="Themes[themesCounter].Subject" value = "' + $subject.val() + '"
/>');
        ...
        themesCounter++;
     });


by(e)
Stephan



2009/2/8 shapper <mdmo...@gmail.com>:
>
> Hi,
>
> I am adding list items to a list as follows:
>
>      $('#AddTheme').bind('click', function(){
>
>         // Other code
>
>          $theme = $('<li class="Themes"></li>').appendTo
> ('#Themes');
>
>          $theme.append('<input type="hidden" name="Themes[0].Subject"
> value = "' + $subject.val() + '" />');
>          $theme.append('<input type="hidden" name="Themes
> [0].LevelsCsv" value = "' + levelsTypes.join(",") + '" />');
>          $theme.append('<input type="hidden" name="Themes
> [0].Description" value = "' + description.val() + '" />');
>
>      });
>
> Basically, every time I add a new item I want to give the next number
> to Themes[0], i.e., Themes[1].
>
> If I add 3 themes I will have Themes[0], Themes[1], Themes[2]
>
> Basically, I need to have at all times themes numbered as 0, 1, 2, ...
>
> Could someone please help me out?
>
> Thanks,
> Miguel
>
> Just in case, here is my entire code fully commented:
>
>    $('#Cancel').click(function() { location.href = '/Account/
> List'; });
>
>    // Themes >>
>
>      // Define remove event
>      $('.Remove').livequery('click', function(event) {
>        $(this).parent().remove();
>      });
>
>      // Bind add button
>      $('#AddTheme').bind('click', function(){
>
>        // Define valid
>        var valid = new Boolean(true);
>
>        // Define fields
>        $description = $('#Description');
>        $levels = $('input[name="Levels"]:checked + label');
>        $levelsTypes = $('input[name="Levels"]:checked');
>        $subject = $('#Subject option:selected');
>
>        // Map levels
>        levels = $levels.map(function() { return $(this).text(); }).get
> ();
>        levelsTypes = $levelsTypes.map(function() { return $(this).val
> (); }).get();
>
>        // Check subject
>        if (!$subject.val()) { valid = false; }
>
>        // Check levels
>        if (!levels.length) { valid = false; }
>
>        // Check boolean
>        if (valid) {
>
>          // Define theme
>          $theme = $('<li class="Themes"></li>').appendTo
> ('#Themes');
>
>          // Add fields
>          $theme.append($subject.text()).append('<br />');
>          $theme.append( Levels(levels) + '<br />' );
>          if ($description.val()) { $theme.append($description.val
> ()).append('<br />'); }
>
>          // Add button
>          $theme.append('<a href="#Remove" class="Remove">Remover</
> a>');
>
>          // Add inputs
>          $theme.append('<input type="hidden" name="Themes[0].Subject"
> value = "' + $subject.val() + '" />');
>          $theme.append('<input type="hidden" name="Themes
> [0].LevelsCsv" value = "' + levelsTypes.join(",") + '" />');
>          $theme.append('<input type="hidden" name="Themes
> [0].Description" value = "' + description.val() + '" />');
>
>          // Add input
>          //$theme.append(' <input type="hidden" name="Themes" value =
> "' + theme + '" />');
>
>        }
>
>      });
>
>      // Levels
>      function Levels(levels) {
>
>        // Check levels
>        if (levels.length < 2) return levels.join('');
>
>        // Define first
>        var first = levels.slice(0, -1), last = levels.slice(-1);
>
>        // Define result
>        var result = first.join(', ');
>
>        // Check last
>        if (last) { result += ' and ' + last; }
>
>        // Return results
>        return result;
>
>      } // Levels
>

Reply via email to