Получить содержимое элемента формы с тем же именем в Jquery. Доступ к детям объекта - PullRequest
2 голосов
/ 07 июля 2011

У меня есть форма в формате

<form>
<fieldset>
  <label for="select_label">Enter Label </label>
  <input type="text" class="text ui-widget-content ui-corner-all" id="select_label" name="select_label" gtbfieldid="307">
</fieldset>
<fieldset>
  <label for="select_option">Option</label>
  <input type="text" class="text ui-widget-content ui-corner-all" name="select_option" gtbfieldid="308">
</fieldset>
<fieldset>
  <label for="select_option">Option</label>
  <input type="text" class="text ui-widget-content ui-corner-all" value="1" name="select_option">
</fieldset>
<fieldset>
  <label for="select_option">Option</label>
  <input type="text" class="text ui-widget-content ui-corner-all" value="2" name="select_option">
</fieldset>
<fieldset>
  <label for="select_option">Option</label>
  <input type="text" class="text ui-widget-content ui-corner-all" value="3" name="select_option">
</fieldset>
<fieldset>
  <label for="select_option">Option</label>
  <input type="text" class="text ui-widget-content ui-corner-all" value="4" name="select_option">
</fieldset>
<fieldset>
  <input type="button" value="Add More Option" id="add_more" name="add_more">
</fieldset>

, и я пытаюсь получить значения всех входов, имя которых «select_option».У меня есть код java-скрипта, который зацикливается на количество повторений элемента, но я не могу получить значение этих

for(var i=0 ; i<$('input[name=select_option]').size(); i++)
{
    alert(i);
    alert($('input[name=select_option]').children(i));
            //alert($('input[name=select_option]').children()[0].find("input").val());
}

. Вы можете увидеть вышеупомянутый код, и то, что я прокомментировал, не работаетдля меня.есть идеи?

Ответы [ 5 ]

3 голосов
/ 07 июля 2011

Вы не имеете в виду .children(i). Вы имеете в виду .get(i), а еще лучше просто [i]:

for(var i=0 ; i<$('input[name=select_option]').size(); i++) {
    alert(i);
    // both .get() and array index return a DOM object
    alert($('input[name=select_option]').get(i).value);
    alert($('input[name=select_option]')[i].value); 
    // or, if you want to use .val(), wrap it in jQuery again
    alert( $($('input[name=select_option]')[i]).val() ); 
}

Но это не очень хорошо или эффективно. По крайней мере, вы можете сохранить результат $('input[name=select_option]') в переменной перед входом в цикл. Однако jQuery упрощает итерацию, поэтому используйте .each():

var values = [];
$('input[name=select_option]').each( function () {
  values.push(this.value);
}); 

или, может быть, даже

var values = $('input[name=select_option]').map( function () {
  return this.value;
});

Обратите внимание, что $.map() - обычная функция jQuery - возвращает объект jQuery. Для многих целей эти объекты ведут себя как массивы.

Если вам нужно получить массив real , используйте .toArray():

var values = $('input[name=select_option]').map( function () {
  return this.value;
}).toArray();
3 голосов
/ 07 июля 2011

1001 * попробовать *

$('input[name=select_option]').each(function(){alert($(this).val())});
2 голосов
/ 07 июля 2011

Input элементы не имеют дочерних элементов.

$('input[name="select_option"]').each(function(index) {
    console.log(index + " " $(this).val());
});

Этот фрагмент будет перебирать элементы input, атрибут которых name равен select_option, и записывать их значение.

0 голосов
/ 07 июля 2011
        alert('Quick answer...')
        // quick fix is to use `.eq()` instead of `.children()`
        for(var i=0 ; i<$('input[name=select_option]').size(); i++)
        {
            alert(i);
            alert($('input[name=select_option]').eq(i).val());
        }

        alert('Better answer...')
        // Better way            
        $('input[name=select_option]').each(function(k,v){
            alert(k);
            alert($(v).val())
        })
0 голосов
/ 07 июля 2011

У объекта нет детей.Элемент является дочерним по отношению к элементу, в котором он (непосредственно) находится.

Возможно, вы хотите что-то вроде:

$('input[name=select_option]').each(someFunction);

См. Документацию для каждого

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...