Я пытаюсь поместить строковое значение в массив на основе их позиции по отношению ко всем элементам с именем класса. Я получаю массив индексов, которые я хочу использовать сейчас. Я хочу использовать каждый из значений индекса для выбора соответствующего значения.
$(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] + ")");
Что я здесь делаю неправильно?
Наконец понял это. Код позволяет мне использовать данные, хранящиеся в массивах, при загрузке страницы и сравнивать их во время отправки формы.
<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>
Вам не нужно искать флажок по идентификатору, у вас уже есть ссылка на него. Вы можете использовать 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/
Это в основном то, что вы пытаетесь сделать?
Сделать вещи проще
Просто используйте один массив для хранения...
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
сделал скрипку, не уверенную в использовании разметки, так что это просто визуальное представление