Подтвердить что ты не робот

Получение правильного индекса из входного массива в JQuery

Как получить правильный индекс выбранного ввода из набора элементов ввода с нерегулярно пронумерованными индексами с помощью JQuery? Функция "индекс" JQuery всегда возвращает значение, начинающееся с 0 вместо индексов, которые я использовал. Мой код ниже:

JQuery

$("input[name^=myboxes]").click(function() {
        var element_id = $("input[name^=myboxes]").index(this);
        alert(element_id); //will alert 0, 1, or 2 instead of 3, 8, or 10
});

HTML:

<input type="checkbox" id="myboxes[3]" name="myboxes[3]" value="CHECKED"  >
<input type="checkbox" id="myboxes[8]" name="myboxes[8]" value="CHECKED"  >
<input type="checkbox" id="myboxes[10]" name="myboxes[10]" value="CHECKED" CHECKED >

Спасибо!

4b9b3361

Ответ 1

Значение вашего идентификатора не имеет свойства "index". Это просто строка.

Одно предложение: проанализировать строку id, чтобы получить ваше значение:

$("input[name^=myboxes]").click(function() {
    var element_id = $(this).attr('id');
    //the initial starting point of the substring is based on "myboxes["
    var ix = element_id.substring(8,element_id.length - 1)
    alert(ix);
});

Надеюсь, что это поможет

Ответ 2

Следующее - это то, что всегда работало для меня.

JQuery

$("input[name^=myboxes]").click(function() {
        var element_id = $(this).attr("meta:index");
        alert(element_id);
});

HTML:

<input type="checkbox" id="myboxes[3]" name="myboxes[3]" meta:index="3" value="CHECKED"  >
<input type="checkbox" id="myboxes[8]" name="myboxes[8]" meta:index="8" value="CHECKED"  >
<input type="checkbox" id="myboxes[10]" name="myboxes[10]" meta:index="10" value="CHECKED" CHECKED >

Надеюсь, что это поможет.

Ответ 3

В выбранном ответе есть несколько проблем с синтаксисом:

$("input[name^=myboxes]").click(function() {
    var element_id = $(this).attr('id');
    //the initial starting point of the substring is based on "myboxes["
    var ix = element_id.substring(8,element_id.length - 1);
    alert(ix);
});

Ответ 4

было бы еще короче, если вы сделаете это так:

   var id = $(this).attr('id');
       // remove everything that is not a number
       id = id.replace(/[^0-9]/g, '');
       alert(id);