HTML-форма отправки и событие onclick с одной и той же кнопки

#html #forms #onclick

#HTML #формы #onclick

Вопрос:

Я хотел бы отправить форму и вернуться туда, откуда пришел пользователь, используя кнопку в HTML. Моя кнопка выглядит так:

 <input type="submit" value="submit" onclick="history.back(-1)" />
 

Форма отправляется, но onclick не перенаправляется. Есть ли простой способ сделать это или мне нужно создать функцию JS или сделать что-то на стороне сервера?

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

1. вы должны отправить данные с помощью ajax и выполнить history.back(-1).

2. вы можете использовать <input type="submit" value="submit" onclick="window.location.href=history.back(-1)"/>

Ответ №1:

Вы должны обрабатывать отправку формы с помощью Ajax и, чтобы предотвратить поведение браузера по умолчанию, делать так:

 <input type="submit" value="submit" onclick="handleSubmit()" />
 
 function handleSubmit(e) {

    //prevent default behavior of browser on submit form
    e.preventDefault();
    
    //do your job here
    sendDataToExampleAPI();

    //back to previous address in browser
    window.history.back();
}
 

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

1. Спасибо, Маджид! Я попробовал это сейчас: функция handleSubmit(e) { //предотвратить поведение браузера по умолчанию при отправке формы e.preventDefault(); // выполняйте свою работу здесь var form = document.getElementById(«form-id»); form.submit(); //вернуться к предыдущему адресу вwindow.history.back(); } Форма отправляется, но браузер по-прежнему не возвращается. В браузере есть ошибка, но она мигает так быстро, что я не могу ее прочитать…

2. @Muriel установите функцию handleSubmit для события onsubmit формы и повторите попытку

3. Ошибка заключается в том, что буква «e» не определена.

Ответ №2:

history.back(-1) вместо этого вы должны использовать window.location.href=history.back(-1)

 <input type="submit" onclick="window.location.href=history.back(-1)"/> 
 

Вы должны использовать его.

Кроме того, не забудьте использовать e.preventDefault() для предотвращения непредвиденного поведения при отправке формы.

Вам также может потребоваться отправить данные с помощью Ajax.

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

1. Спасибо, Gucal, я попробовал это, но браузер остается с формой — форма все же отправляется…

2. Можете ли вы попробовать без использования -1. window.location.href=history.back() или window.history.back()

3. Если он не отправляет подобную форму, вам следует вызвать window.history.back() функцию внутри функции отправки формы.

4. Спасибо! Я попробую это в am и дам вам знать, как это происходит. Очень признателен за помощь 🙂

5. Я надеюсь, что это будет успешным. Удачи 🙂

Ответ №3:

history.back() один только метод в HTML ничего не делает.

У вас должна быть функция в JS, которая вызывает history.back() и передает эту функцию вашему onclick в HTML. Кроме того, history.back() метод не получает никаких аргументов. Он автоматически переходит на 1 шаг назад. В качестве альтернативы вы можете использовать history.go(-1) .

Итак, что-то вроде этого:

 <input type="submit" value="submit" onclick="goBack()" />
 
 function goBack() {
  history.back();
}
 

Проверьте это для справки

Кроме того, чтобы отправить форму, ваш <input> должен быть внутри <form> тега, например:

 <form id="form">
  <input type="submit">Submit form/>
</form>
 

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

1. Итак, если я сделаю это: « <тип ввода =»кнопка» значение =»только для возврата» onclick =»history.back (-1)» /> « он возвращается (но не отправляет форму)

2. Ваш тип ввода должен быть «отправить», чтобы отправить форму.