Как я могу выбрать конкретное значение элемента jquery из цикла?

0

Я пытаюсь поместить строковое значение в массив на основе их позиции по отношению ко всем элементам с именем класса. Я получаю массив индексов, которые я хочу использовать сейчас. Я хочу использовать каждый из значений индекса для выбора соответствующего значения.

$(function () 
{
    $("#date").datepicker();
    $('input[name=date]').datepicker();
    var dateInput = $("select[name='searchString']");
    var theClassTime = $("input.TextBoxDate");
    var checkedindex = [];
    var classday = [];

    $("input[name='selectedCourses']").each(function (i) 
    {
        if (this.checked) 
        {
            // this works fine
            checkedindex.push(parseInt(i));

            // this is where Im trying to select values based on index.
            var dayofclass = $(".TextBoxDate:eq(" + checkedindex[i] + ")");

            classday.push(dayofclass);

            alert(classday);
        }
    });
});

Скажем, checkedindex имеет значения: 2,3,9 с индексом 0 отмеченного индекса - 2, при 1 = 3 и при 2 = 9. Я хочу использовать 2, 3 и 9, чтобы сделать что-то вроде этого:

var dayofclass = $(".TextBoxDate:eq(" + checkedindex[i] + ")");

Что я здесь делаю неправильно?

  • 0
    Вы пробовали проходить по выбранным курсам. Тогда в вашем операторе if if (this.checked) var addVal = this.innerhtml (); classday.push (addval) ;.
  • 0
    То, что я написал выше, в основном получает ценность преподавания на выбранных курсах, которые проверяются. Сохраняет это значение, а затем добавляет его в массив. Я не уверен, если вы пытаетесь получить HTML или просто индекс из списка флажков
Теги:

3 ответа

0

Наконец понял это. Код позволяет мне использовать данные, хранящиеся в массивах, при загрузке страницы и сравнивать их во время отправки формы.

 <script type="text/javascript">


      $(function () {

          $("#date").datepicker();
          $('input[name=date]').datepicker();
          var dateInput = $("select[name='searchString']");

          var checkedindex = [];
          var classdate = [];
          var classtime = [];
          var dayofclass = [];
     $("input[name='selectedCourses']").each(function (i) {
         if (this.checked) {

             checkedindex.push(parseInt(i));

         }

     });
     for (var x = 0; x < checkedindex.length; x++) {
         var ind = checkedindex[x];

         var dateofclass = $(".TextBoxDate:eq(" + ind + ")");
         var timeofclass = $(".TextBoxTime:eq(" + ind + ")");
         var classday = $("select[name='searchString']:eq(" + ind + ")");

         classdate.push(dateofclass);
         classtime.push(timeofclass);
         dayofclass.push(classday);


         alert(classdate[x].val() + "  " + classtime[x].val() + " " + dayofclass[x].val());
     }
 });
</script>
  • 0
    Рад, что вы поняли это. Сначала было непонятно, что вы хотели сделать ...
0

Вам не нужно искать флажок по идентификатору, у вас уже есть ссылка на него. Вы можете использовать this если хотите элемент или $(this) если хотите объект jquery.

$(function () 
{
    $("#date").datepicker();
    $('input[name=date]').datepicker();
    var dateInput = $("select[name='searchString']");
    var theClassTime = $("input.TextBoxDate");
    var checkedindex = [];
    var classday = [];

    $("input[name='selectedCourses']").each(function (i) 
    {
        if (this.checked) 
        {
            // this works fine
            checkedindex.push(parseInt(i));

            // this is where Im trying to select values based on index.
            // this will get the value of the current checkbox
            var dayofclass = $(this).val(); 

            classday.push(dayofclass);

            alert(classday);
        }
    });
});

Пример jsfiddle: http://jsfiddle.net/2TJLm/

Это в основном то, что вы пытаетесь сделать?

  • 0
    Пожалуйста, разместите свой ответ здесь, а не просто ссылку на него
  • 0
    var dayofclass = $ (this) .val (); не делает правильный выбор. Я пытался использовать это: $ (". TextBoxDate: eq (" + checkedindex [i] + ")") в качестве селектора.
0

Сделать вещи проще

Просто используйте один массив для хранения...

var selectedCourses = $("input[name='selectedCourses']"),
    theClassTime = $("input.TextBoxDate"),
    checkedindex = [],
    go = true;

function dothings() {
    selectedCourses.each(function (i) {//for each possible selection
        var cur = theClassTime.eq(i);//get current selected

        //do something
        if (this.checked) {
            cur.addClass('red');//for checked
            if (go) { checkedindex.push(i); }//store initial selections
        } else {
            cur.removeClass('red');//for non checked
        }
    });
    go = false;//turn off
    alert(checkedindex);//show stored array
}

selectedCourses.on('change', function() { dothings(); });//run on event

dothings();//run initially

сделал скрипку, не уверенную в использовании разметки, так что это просто визуальное представление

  • 0
    Вот мой сценарий: когда пользователь попадает на эту страницу. Некоторые поля уже отмечены. Я создаю массив для сбора позиций тех флажков, которые мне удалось сделать. Теперь, если пользователь вносит изменения в форму, во время функции щелчка я хочу использовать ранее сохраненный индекс из более раннего массива, чтобы выполнить некоторую работу.
  • 0
    Нет проблем, обновлено решение, чтобы можно было использовать изначально сохраненный массив.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню