JS как определить существование элемента?

V
На сайте с 10.01.2012
Offline
85
642

Имеется форма с динамическим добавлением/удалением полей пользователем. После манипуляций с добавлением/удалением полей появляется структура вида:


<input id="input_1" name="input_1" >
<input id="input_4" name="input_4" >
<input id="input_5" name="input_5" >
<input id="input_9" name="input_9" >
<input id="input_10" name="input_10" >

Тоисть - нумерация некоторых элементов выпадает после удаления.

Суть проверить на существования элемента. К примеру проверяю так:


if ($('#input_'+number_input).length>0) {...}

или


if ($('input').is('#input_'+number_input)) {...}

где number_input идет перебор циклом от 1 до максимально добавленного, но в конечном итоге проверка не срабатывает.

Подскажите, что делаю не так

izbushka
На сайте с 08.06.2007
Offline
110
#1
Varenik:
if*($('#input'+number_input).length>0)*{...}*

if ($('#input_'+number_input).length>0) {...}

Подчерк ^^^ пропущен

V
На сайте с 10.01.2012
Offline
85
#2

Это тут опечатка (подправил) + на самом деле есть

---------- Добавлено 03.01.2013 в 15:29 ----------

Ко какой-то причина данные структуры обработки не срабатывают, хотя вывод значения несуществующего элемента возвращает undefined. Пробовал и на проверку, равен ли он undefined - все равно обработчик срабатывает как будто элемент существует

F
На сайте с 11.08.2010
Offline
27
#3

Покажите полностью, с перебором.

V
На сайте с 10.01.2012
Offline
85
#4

Разобрался вроде бы. Поставил еще проверку на неравенство пустому значению и проверка заработала, хотя просто проверка на пустое значение опять же таки приводила к краху.

Вот сам код обработчика, может кому-то пригодится:


if (($('#input_'+number_input).length>0) && ($('#input_'+number_input).val() != '')) {...}
R
На сайте с 06.02.2011
Offline
62
#5

может имеет смыл добавить им класс ?

<input id="input_1" name="input_1" class="iclass">

а потом



$(".iclass").each(function(){

alert( $(this).attr("id") );

})

izbushka
На сайте с 08.06.2007
Offline
110
#6
Varenik:
Разобрался вроде бы. Поставил еще проверку на неравенство пустому значению и проверка заработала, хотя просто проверка на пустое значение опять же таки приводила к краху.

Ну дык.. Существование элемента и наличие непустого значения это разные вещи.. Правильно ставьте задачу

siv1987
На сайте с 02.04.2009
Offline
427
#7


for( var i=1; i<=5; i++ ){
if( $('#input_'+i).val() != undefined )
alert( i+': '+ $('#input_'+i).val() );
}

Хотя действительно, проще добавить класс.

---------- Добавлено 03.01.2013 в 19:07 ----------

Вдогонку


$('input[id^="input_"]').each(function(){
alert(this.id);
});

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий