Прервать выполнение функции из другой функции
Есть динамически генерируемая форма с неизвестным количеством полей. Все поля должны быть заполнены.
jQuery(".field[value=""]") находит поля у которых изначально value был пустым, и после заполнения тоже возвращает их. Я решил пройтись по всем полям each'ем и при обнаружении пустого поля прервать отправку формы и пр. действия onclick. $('button').click(function(){ jQuery.each(jQuery(".field"), function (k, item) { if (jQuery.trim(jQuery(item).val()) == "") { alert('Заполните все поля!'); } }); // прочие действия... }); Как мне прервать выполнение всех последующих действий при нахождении незаполненного поля? Или, может как-то это более рационально и правильно реализовать можно? |
Sufir,
Воть так это делаеся <form id="upload" class="container" method="post" enctype="multipart/form-data" action="profile.php?action=upload" onsubmit="return process_form(this)"> По субмиту - запускается функция проверки формы process_form(this) - при возврате функцией false - отправка формы запрещена |
Deff, эммм... Это хорошо конечно, но отправку предотвратить не проблема. А что находится внутри функции process_form?
function process_form(form){ jQuery.each(jQuery(form).find(".field"), function (k, item) { if (jQuery.trim(jQuery(item).val()) == "") { alert('Заполните все поля!'); // Вот тут нужно прервать дальнейшее выполнение и заставить process_form вернуть false } }); }); |
Мда... Это я тупанул, кончно:
$('button').click(function(){ var emptyInputs = 0; jQuery.each(jQuery(".field"), function (k, item) { if (jQuery.trim(jQuery(item).val()) == "") { emptyInputs++; } }); if (emptyInputs) { alert('Заполните все поля!'); } else { // прочие действия... } }); А вообще есть ещё $.prop() и $.map() - с ними всё было бы гораздо удобнее и проще, стоило только копнуть поглубже... |
Часовой пояс GMT +3, время: 21:43. |