Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.06.2012, 10:18
Аватар для Sufir
Аспирант
Отправить личное сообщение для Sufir Посмотреть профиль Найти все сообщения от Sufir
 
Регистрация: 15.06.2008
Сообщений: 47

Прервать выполнение функции из другой функции
Есть динамически генерируемая форма с неизвестным количеством полей. Все поля должны быть заполнены.

jQuery(".field[value=""]") находит поля у которых изначально value был пустым, и после заполнения тоже возвращает их. Я решил пройтись по всем полям each'ем и при обнаружении пустого поля прервать отправку формы и пр. действия onclick.

$('button').click(function(){

            jQuery.each(jQuery(".field"), function (k, item) {
                if (jQuery.trim(jQuery(item).val()) == "") {
                    alert('Заполните все поля!');
                }
            });

            // прочие действия...

});

Как мне прервать выполнение всех последующих действий при нахождении незаполненного поля? Или, может как-то это более рационально и правильно реализовать можно?

Последний раз редактировалось Sufir, 22.06.2012 в 12:20.
Ответить с цитированием
  #2 (permalink)  
Старый 22.06.2012, 10:29
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

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 - отправка формы запрещена
Ответить с цитированием
  #3 (permalink)  
Старый 22.06.2012, 11:27
Аватар для Sufir
Аспирант
Отправить личное сообщение для Sufir Посмотреть профиль Найти все сообщения от Sufir
 
Регистрация: 15.06.2008
Сообщений: 47

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
                }
            });

});

Последний раз редактировалось Sufir, 22.06.2012 в 18:03.
Ответить с цитированием
  #4 (permalink)  
Старый 25.06.2012, 11:55
Аватар для Sufir
Аспирант
Отправить личное сообщение для Sufir Посмотреть профиль Найти все сообщения от Sufir
 
Регистрация: 15.06.2008
Сообщений: 47

Мда... Это я тупанул, кончно:
$('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() - с ними всё было бы гораздо удобнее и проще, стоило только копнуть поглубже...

Последний раз редактировалось Sufir, 28.06.2012 в 10:07.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прервать выполнение AJAX-запроса Charly AJAX и COMET 1 07.11.2011 20:49
Передача функции другой функции ntro123 jQuery 3 20.02.2011 12:15
Прерывается выполнение функции при смене аргумента mikser763 Общие вопросы Javascript 1 11.10.2010 16:36
Вызов функции, находящейся в другой функции ZneP Events/DOM/Window 6 24.08.2010 18:45
Вызов функции из другой функции.. ?? glutton Общие вопросы Javascript 3 21.08.2009 22:33