Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Выполнение формы, или невыполнение. (https://javascript.ru/forum/misc/5179-vypolnenie-formy-ili-nevypolnenie.html)

Maaaa 23.09.2009 23:43

Выполнение формы, или невыполнение.
 
Добрый вечер.

Не могу разобраться с return true/false при сабмите формы.
Есть php-скрипт (редактирование тегов), который выдает, например, номер ошибки, если не получается сохранить тег. Аяксом определяю, сходится ли удаленный контент с номером ошибки и если сходится, то форма не отправляется, а выводится ошибка. В противном случае, форма должна сабмититься. Как разобраться, где ставить ретурны?

Спасибо :)

$("#tag_edit_form").submit(function(){
    var url = $("#tag_edit_form").attr("action");

    $.post(
        url, 
        {
        name: $("#name").attr("value"),
        old_name: $("#old_name").attr("old_name"),
        url_name: $("#url_name").attr("url_name"),
        old_url_name: $("#old_url_name").attr("old_url_name"),
        edit_tag: $("#edit_tag").attr("edit_tag")
        }, 
        function (data){
            if (data == "0000001"){
                $("<div></div>")
               .attr("id", "error")
               .attr("style", "display: none")
               .html("Name is empty")
               .prependTo("#content")
               .slideDown("fast");
               return false;
           } else return true;
       }
    );
});

Octane 24.09.2009 00:16

Видимо так:
$(…).submit(function() {

    …
    
    var form = this;
 
    $.post(
        url, 
        {
            …        
        }, 
        function(data) {
             if (…) {
                  …
             } else {
                  form.submit();
             }
        }
    );

    return false;
   
});

Отправку данных по submit'у формы придется отменять всегда, т.к. post-запрос выполнится асинхронно, для этого делаем retun false непосредственно в обработчике submit. После того, как придет ответ от сервера, в зависимости от условия, отправим форму самостоятельно с помощью form.submit().

Maaaa 24.09.2009 00:21

Большое спасибо!


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