Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   найти все элементы формы (https://javascript.ru/forum/misc/29925-najjti-vse-ehlementy-formy.html)

wcb-falcon 17.07.2012 13:12

найти все элементы формы
 
Хочу сделать проверку формы
пример:
<form method="post" name="form03" action="" >
	<input type="hidden" name="status" value="0" >
	Логин*<br />
	<input type="text" name="login" required="required" >
	Пароль*<br />
	<input type="password" name="password" required="required" >
	Email*<br />
	<input type="text" name="email" required="required" >
	<input type="submit" name="go_callback_form03" value="Отправить" >
</form>

$(document).ready(function(){
		$('input[name=go_callback_form03]').click(function(){
			var form = $('form[name=form03]');
			var values = new Array();
			//...
			// перебор элементов формы и запись их в массив values
			//...
		});
	});

так вот подскажите как мне задать перебор всех элементов формы чтобы потом проверить их на заполненность, нажатие (для чекбоксов и радио), на выбор (для селектов)

у меня есть пример из простого JS где это делается так:
for(var i = 0; i < form.elements.length; i++){ 
		el = form.elements[i]; 
	}

а как это сделать в JQUERY ? :(

Deff 17.07.2012 13:29

<script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script>
<form method="post" name="form03" action="" >
	<input type="hidden" name="status" value="0" >
	Логин*<br />
	<input type="text" name="login" required="required" >
	Пароль*<br />
	<input type="password" name="password" required="required" >
	Email*<br />
	<input type="text" name="email" required="required" >
	<input type="submit" name="go_callback_form03" value="Отправить" >
</form>
<input type="button"  onclick="Test()" value="Test">



<script type="text/javascript">
function Test() {
$("form[name='form03']").find("input,select").not('[type="submit"]').each(function() {
 alert($(this).attr('type'))
});
}
</script>

wcb-falcon 17.07.2012 17:09

спс большое помогло
а то у меня порой бывают очень большие формы и все поля прописывать по именам проблематично а так смогу создать свою универсальную проверку :)

wcb-falcon 17.07.2012 17:50

кстати какие атрибуты можно узнать находясь на том или ином элементе.
а то хотелось бы к примеру отделить select'ы и textarea для дополнительной проверки других значений в этих элементах.

По выше указанному способу могу узнать:
$("form[name='form03']").find("input,select,textarea").not('[type="submit"]').not('[type="hidden"]').each(function(){
	var disabled = $(this).attr('disabled');
	var name = $(this).attr('name');
	var type = $(this).attr('type'); // если елемент INPUT
	var value = $(this).val();
	// ... проверка
}

а вот как при этом определить что элемент INPUT, SELECT и TEXTAREA ?

Deff 17.07.2012 18:01

wcb-falcon,
Ну Вы можете распарсить отдельно
$("form[name='form03']").find("input").not('[type="submit"]').not('[type="hidden"]').each(function(){
	var disabled = $(this).attr('disabled');
	var name = $(this).attr('name');
	var type = $(this).attr('type'); // если елемент INPUT
	var value = $(this).val();
	// ... проверка
});
$("form[name='form03']").find("select").each(function(){
	// ... проверка
})
$("form[name='form03']").find("textarea").each(function(){
	// ... проверка
});


А можно внутри глядеть Тег
<script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script>
<form method="post" name="form03" action="" >
	<input type="hidden" name="status" value="0" >
	Логин*<br />
	<input type="text" name="login" required="required" >
	Пароль*<br />
	<input type="password" name="password" required="required" >
	Email*<br />
	<input type="text" name="email" required="required" >
	<textarea></textarea>
	<input type="submit" name="go_callback_form03" value="Отправить" >
</form>
<input type="button"  onclick="Test()" value="Test">



<script type="text/javascript">
function Test() {
$("form[name='form03']").find("input,select,textarea").not('[type="submit"]').each(function() {
 alert(this.nodeName)
});
}
</script>

melky 17.07.2012 18:12

Цитата:

Сообщение от Deff
.find("input,select")

textarea ? плохо

DreamTheater 17.07.2012 18:22

А чем не подходит serializeArray?


Часовой пояс GMT +3, время: 13:26.