2014-09-08 3 views
1

Имея После одобрения формы с помощью JQuery:Отправить форму после щелчка

$("#Login").submit(function(event) { 
    var url = 'ajax/'; 
    var data = {}; 
    $("input").each(function() { 
     data[$(this).attr('name')] = $(this).val(); 
    }); 
    $.post(url,data,function(resp) { 
     $("#formLoginErrorMessage").children().remove(); 
     if(resp === " ") 
     {     
      console.log("Empty"); 
      return; // The form should submit 
     } else if (typeof resp === "object") { 
      console.log(resp); 
     } else{ 
      $("#formLoginErrorMessage").addClass("alert-danger"); 
      $("#formLoginErrorMessage").append("<li>" + resp + "</li>"); 
      console.log(resp); 
     } 
    },'json'); 
    event.preventDefault(); 
}); 

Этого скрипт проверяет некоторые ошибки и когда соответственно пустая форма должна представить. Но возвращение от если где resp проверено, похоже, не делает форму отправки.

ответ

0

Вы можете вызвать метод submit() в if состоянии

$("#Login").submit(function (event) { 
    var form = this; 
    var url = 'ajax/'; 
    var data = {}; 
    $('input').each(function() { 
     data[$(this).attr('name')] = $(this).val(); 
    }); 
    $.post(url, data, function (resp) { 
     $("#formLoginErrorMessage").children().remove(); 
     if (resp === " ") { 
      form.submit(); 
      console.log("Empty"); 
      return; // The form should submit 
     } else if (typeof resp === "object") { 
      console.log(resp); 
     } else { 
      $("#formLoginErrorMessage").addClass("alert-danger"); 
      $("#formLoginErrorMessage").append("<li>" + resp + "</li>"); 
      console.log(resp); 
     } 
    }, 'json'); 
    event.preventDefault(); 
}); 
+2

изменение ** это.отсутствие(); ** to ** форма.submit(); ** и будет работать. – user3799263

+0

и удалите ** возврат; ** там не нужно. Благодаря @php_nub_qq – user3799263

0

Что вы, кажется, запутались являются замыканиями

$("#Login").submit(function(event) { 

    // main submit handling function starts here 

    ... 

    $.post(url,data,function(resp){ 

     // inner response handling function starts here 

     if(resp === " "){    
       console.log("Empty"); 
       return; //This returns to jQuery internals somewhere inside $.post 
     } ... 
    },'json'); 

    // stops form from submitting 
    event.preventDefault(); 
}); 

Я добавил несколько замечаний, чтобы помочь вам получить лучшее визуальное объема.

Прежде всего, вы никогда не должны полагаться на проверку на стороне клиента. Его можно обогнать без исключений. Если по какой-то причине вы настаиваете на том, чтобы использовать его таким образом, вы можете использовать некоторую внешнюю переменную области видимости для определения того, прошла ли проверка или нет, но тогда вы должны использовать $form.submit() вместо return, чтобы отправить форму.

Смежные вопросы