Требуется два клика для отправки формы — jQuery (например, вопрос проверки stackoverflow)

#javascript #jquery #forms #submit

#javascript #jquery #формы #Отправить

Вопрос:

Я пытаюсь воспроизвести функцию публикации отзыва, которую вы видите здесь, в stackoverflow, но я борюсь с необходимостью двух кликов для отправки части этого. Мои поиски вернули множество проблем с проверкой, но ничего не имеют отношения к тому, что я ищу.

У меня есть стандартная форма:

 <form action="http://www.google.com/">
  <textarea name="text"></textarea>
  <input type="submit" name="review" value="Review" />
</form>
 

С помощью следующего jQuery:

 $(function(){
  $('form').submit(function(){
    $('html, body').animate({scrollTop : $(".Anchor").offset().top}, 300);
    return false; // to cancel form action
  });
});
 

Как я могу сделать так, чтобы при нажатии кнопки отправки она переходила к привязке, а затем при следующем нажатии отправляла форму? Я также хотел бы изменить значение с review на submit, но я уверен, что смогу разобраться с этой частью после получения ответа на первоначальный вопрос.

Живой пример того, что у меня есть, можно найти здесь, в CodePen

Комментарии:

1. Возможно, сохраните переменную, чтобы отслеживать выполненные события и выполнять прокрутку и отправку формы на основе значения этой переменной. Вы можете использовать эту переменную, чтобы изменить имя с review на submit . Например: let hasUserReviewedTheForm = false Затем измените значение переменной при первом щелчке на true , а затем измените имя и отправьте форму.

Ответ №1:

Используя переменную внутри вашей функции, вы можете переключать переменную с true на на false по щелчку мыши. С помощью этого метода вы можете манипулировать всем, что хотите, чтобы второе действие было в операторе else.

Пример этого основан на предоставленном вами коде:

 $(function(){
  let hasUserReviewedTheForm = false;
  $('form').submit(function(){
    if(!hasUserReviewedTheForm) {
        $('html, body').animate({scrollTop : $(".Anchor").offset().top}, 300);
        //change the form name and change the variable value
        hasUserReviewedTheForm = true;
        return false; // to cancel form action
    }
    else {
      //Submit the form
    }
  });
});
 

Комментарии:

1. Те моменты, когда ты пукаешь, когда ты такой, как дух, как я не думал об этом таким образом. Я слишком много думал об этом, спасибо за простое решение.

2. Ха-ха! Я тоже был там!