Задать вопрос
  • Как сделать, что бы форма отправлялась одним кликом а не 2-мя?

    viktorvsk
    @viktorvsk
    Не знаю, зачем вам нужно это return savePost() но со второго раза отправляется, по всей видимости, от того, что savePost() в первый раз возвращает false

    function savePost()
    {
      // Различные валидации. t - это переменная, которая содержит значение 
      // true/false в зависимости от того, пройдена ли валидация
      var t=true;
      if ($('#post_form input[name=post_name]').val().length<1) 
      {
        $('#post_form input[name=post_name]').css('background-color','#edc4c4');
        t=false;
      }
      else $('#post_form input[name=post_name]').css('background-color','#ffffff');
      if ($('#post_form textarea[name=post_text]').val().length<1) 
      {
        $('#post_form textarea[name=post_text]').css('background-color','#edc4c4');
        t=false;
      }
      else $('#post_form textarea[name=post_text]').css('background-color','#ffffff');
    
      // Если валидация пройдена
      if (t)
      {
        // Сформировать строку параметров из формы
        var qString = $('#post_form').formSerialize();
    
        // Отправить форму асинхронным запросом
        $.post("/include/save_post.php", qString, function (data)
        {
          // Если все прошло нормально, вывести окно и перегрузить текущую страницу
          alert("Изменения сохранены");
          top.location.href=top.location.href;
        });
      }
    
      // Блокировать переход по форме
      return false;
    }


    Данные у вас отправляются асинхронно (http/ajax-запросом). Так сделано специально.
    Или вы не видете окна "Изменения сохранены"? Или после этого не перезагружается страница?

    Если вам не нужна асинхронная отправка, то можно оставить вот так, сохранив валидацию:
    function savePost()
    {
      // Различные валидации. t - это переменная, которая содержит значение 
      // true/false в зависимости от того, пройдена ли валидация
      var t=true;
      if ($('#post_form input[name=post_name]').val().length<1) 
      {
        $('#post_form input[name=post_name]').css('background-color','#edc4c4');
        t=false;
      }
      else $('#post_form input[name=post_name]').css('background-color','#ffffff');
      if ($('#post_form textarea[name=post_text]').val().length<1) 
      {
        $('#post_form textarea[name=post_text]').css('background-color','#edc4c4');
        t=false;
      }
      else $('#post_form textarea[name=post_text]').css('background-color','#ffffff');
    
      return t;
    }
    Ответ написан
    9 комментариев