Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JQuery аякс + событие 
V
    Опции темы
Samvel2010
  Дата 14.12.2012, 02:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 31.5.2010
Где: Москва-Ереван

Репутация: нет
Всего: нет



Добрый  день!  у меня есть форма ..При отправке проверяется корректная залоненость ip и порта. потом аяксом в базе проверяется наличие ... если нету в бд то форме отпрявляю return:false; . Но при указании return:false; в $.post форма не останавливается.

Код

    $(document).ready(function () {
        $('#send_d_o').submit(function() {
            var myip = $('#ip_v4').val();
            if(!myip.isIpv4()) {
                alert('Введите корректный IP-адрес!');
                return false;    
            }else{
                if($("#ip_v4_port").val() == ""){
                    alert('Введите порт!');
                    return false;
                }else{            
                    $.post("newapi.php", $("#send_d_o").serialize(),function(data){                
                        if(data.result == '0'){
                        alert('Ващего сервера нету списках на сайте Пожалуйста зарегистрируйтесь!');
                                                return false;/* ??????????????????  */
                        }
                    }, "json");

                }                    
            }
        });

PM MAIL ICQ   Вверх
ksnk
Дата 14.12.2012, 06:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 38
Всего: 386



Код

 $.post(...
                   , "json");
return false;

?
или вообще всегда возвращать return false, раз уж другого варианта не предусматривается.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Aliance
Дата 14.12.2012, 10:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 7
Всего: 137



Если это разовый случай на сайте, то можно немного похардкодить:
Код

$(инпут).submit(function(event){
    event.preventDefault(); // отменяем поведение по умолчанию
    var myip = $('#ip_v4').val();
    if (!myip.isIpv4()) {
        alert('Введите корректный IP-адрес!');
    } else {
        if($("#ip_v4_port").val() == ""){
            alert('Введите порт!');
        } else {
            $.post("newapi.php", $("#send_d_o").serialize(),function(data){                
                if(data.result == '0'){
                    alert('Вашего сервера нету списках на сайте. Пожалуйста зарегистрируйтесь!');
                } else {
                    $(форма).trigger('submit'); // хардкодинг
                }
            }, "json");
        }
    }
})


Если же хочется уникальности и независимости от ссылки на форму, то делать замыкание вокруг post и вызывать примерно так:
Код

$(this).closest('form').trigger('submit');

PM MAIL WWW ICQ Skype   Вверх
Samvel2010
Дата 14.12.2012, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 31.5.2010
Где: Москва-Ереван

Репутация: нет
Всего: нет



Цитата(ksnk @  14.12.2012,  06:37 Найти цитируемый пост)
или вообще всегда возвращать return false, раз уж другого варианта не предусматривается. 

Нет ,
Код

return false;

зависит от результата аякс запроса ..


Цитата(Aliance @  14.12.2012,  10:53 Найти цитируемый пост)
Если это разовый случай на сайте, то можно немного похардкодить

Да случай разовый .. Но Ваш метод не получился так как форма отправляется всё равно 

PM MAIL ICQ   Вверх
ksnk
Дата 14.12.2012, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 38
Всего: 386



Цитата(Samvel2010 @  14.12.2012,  13:38 Найти цитируемый пост)
так как форма отправляется всё равно 


Вы в курсе КОГДА срабатывает return false в конце вызова функции и КОГДА срабатывает функция в post? Что срабатывает раньше и какой смысл возвращаемое значение имеет?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Arantir
Дата 14.12.2012, 13:49 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 3
Всего: 55



Господи, что за мода на return false пошла? Откуда только люди берут это в голову...
Вот как события останавливают:
Код

event.preventDefault();


Добавлено через 3 минуты и 28 секунд
Цитата(Samvel2010 @  14.12.2012,  12:38 Найти цитируемый пост)
Да случай разовый .. Но Ваш метод не получился так как форма отправляется всё равно 
Вы в агрументах event не запамятовали указать? Aliance ведь четкий пример вам дал.
preventDefault работает стопроцентно. Если у вас не работает - значит вы достутили ошибку в коде.

Это сообщение отредактировал(а) Arantir - 14.12.2012, 13:50


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
Samvel2010
Дата 15.12.2012, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 31.5.2010
Где: Москва-Ереван

Репутация: нет
Всего: нет



Цитата(ksnk @  14.12.2012,  13:48 Найти цитируемый пост)
Вы в курсе КОГДА срабатывает return false ... 

Да я не предупредил - Что в JS я зелёный. Методом проб и ошибок  понял =)

Цитата(Arantir @  14.12.2012,  13:49 Найти цитируемый пост)
Господи, что за мода на return false пошла? Откуда только люди берут это в голову...

Не с потолка это точно =) С Учебников и учебных материалов.

Проблему решил по-другому чуть поменял концепцию формы.И проверку вынес в отдельную кнопку .

Всем спасибо !
PM MAIL ICQ   Вверх
Amphiluke
Дата 15.12.2012, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 17
Всего: 112



Цитата(Arantir @  14.12.2012,  17:49 Найти цитируемый пост)
Господи, что за мода на return false пошла? Откуда только люди берут это в голову...

Это документированная фича jQuery.

Цитата(jQuery API)

Returning false from an event handler will automatically call event.stopPropagation() and event.preventDefault().


Впрочем если нужно исключительно предотвратить действие по умолчанию, лучше, действительно, использовать один только .preventDefault(), без отмены всплытия.
PM   Вверх
Arantir
Дата 15.12.2012, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 3
Всего: 55



Цитата(Samvel2010 @  15.12.2012,  13:23 Найти цитируемый пост)
Не с потолка это точно =) С Учебников и учебных материалов.

Цитата(Amphiluke @  15.12.2012,  13:44 Найти цитируемый пост)
Это документированная фича jQuery.
А я и не говорил, что это не работает. Просто многие применяют это не совсем там где нужно, там где не нужно, там где не совсем нужно, или там где совсем не нужно =)

Amphiluke, вот вы пишите, мол это документировано. Но $.post() - это не event handler, чтобы из него false возвращать. return сам по себе вверх по иерархии функций не двигается. Надо делать return той функции, которая что-то возвратила, чтобы "продвинуть" результат return'а выше. 
Но это не поможет, так как .post() возвращает не результат своего callback'а. 
И вообще все это не важно, так как запрос асинхронный и callback выполнится вообще после того, как весь остальной код из .submit().
Ну ладно, последние два пункта return false напрямую не касаются, но просто хотел намекнуть, что когда делаешь return false, то надо понимать, что именно он в итоге сделает.

P.S.: Вот Aliance, привел чудесный пример правильного решения поставленной задачи (хотя и слегка много вложенности if-ов вышло, но это косметическое).


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
Amphiluke
Дата 15.12.2012, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 17
Всего: 112



Я увидел return false в обработчике события submit smile
P.S. .preventDefault() тоже никак не вяжется с $.post(), если что

Это сообщение отредактировал(а) Amphiluke - 15.12.2012, 15:46
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема »


 




[ Время генерации скрипта: 0.0815 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.