Код JavaScript для остановки отправки формы
Один из способов остановить отправку формы - вернуть false из вашей функции JavaScript.
Когда нажата кнопка отправки, вызывается функция проверки. У меня есть случай проверки формы. Если это условие выполнено, я вызываю функцию с именем returnToPreviousPage();
function returnToPreviousPage() {
window.history.back();
}
Я использую JavaScript и Dojo Toolkit.
Скорее возвращаясь к предыдущей странице, она отправляет форму. Как я могу отменить эту заявку и вернуться на предыдущую страницу?
Ответы
Ответ 1
Вы можете использовать возвращаемое значение функции для предотвращения отправки формы
<form name="myForm" onsubmit="return validateMyForm();">
и функция, подобная
<script type="text/javascript">
function validateMyForm()
{
if(check if your conditions are not satisfying)
{
alert("validation failed false");
returnToPreviousPage();
return false;
}
alert("validations passed");
return true;
}
</script>
В случае Chrome 27.0.1453.116 м, если приведенный выше код не работает, установите для параметра обработчик события returnValue значение false, чтобы заставить его работать.
Спасибо Сэму за информацию.
ИЗМЕНИТЬ:
Спасибо Викраму за его обход, если validateMyForm() возвращает false:
<form onsubmit="event.preventDefault(); validateMyForm();">
где validateMyForm() - это функция, которая возвращает false, если проверка не выполняется. Ключевым моментом является использование события name. Мы не можем использовать, например, e.preventDefault()
Ответ 2
Использовать по умолчанию
Dojo Инструментарий
dojo.connect(form, "onsubmit", function(evt) {
evt.preventDefault();
window.history.back();
});
JQuery
$('#form').submit(function (evt) {
evt.preventDefault();
window.history.back();
});
Ванильный JavaScript
if (element.addEventListener) {
element.addEventListener("submit", function(evt) {
evt.preventDefault();
window.history.back();
}, true);
}
else {
element.attachEvent('onsubmit', function(evt){
evt.preventDefault();
window.history.back();
});
}
Ответ 3
На данный момент работает (проверено в Chrome и Firefox):
<form onsubmit="event.preventDefault(); validateMyForm();">
Где validateMyForm() - это функция, которая возвращает false
, если проверка не выполняется. Ключевым моментом является использование имени event
. Мы не можем использовать, например, e.preventDefault()
.
Ответ 4
Просто используйте простой button
вместо кнопки отправки. И вызвать функцию JavaScript для обработки формы submit:
<input type="button" name="submit" value="submit" onclick="submit_form();"/>
Функция в теге script
:
function submit_form() {
if (conditions) {
document.forms['myform'].submit();
}
else {
returnToPreviousPage();
}
}
Вы также можете попробовать window.history.forward(-1);
Ответ 5
Все ваши ответы дали что-то для работы.
НАКОНЕЦ, это сработало для меня: (если вы не выбрали хотя бы один элемент флажка, он предупреждает и остается на той же странице)
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<form name="helloForm" action="HelloWorld" method="GET" onsubmit="valthisform();">
<br>
<br><b> MY LIKES </b>
<br>
First Name: <input type="text" name="first_name" required>
<br />
Last Name: <input type="text" name="last_name" required />
<br>
<input type="radio" name="modifyValues" value="uppercase" required="required">Convert to uppercase <br>
<input type="radio" name="modifyValues" value="lowercase" required="required">Convert to lowercase <br>
<input type="radio" name="modifyValues" value="asis" required="required" checked="checked">Do not convert <br>
<br>
<input type="checkbox" name="c1" value="maths" /> Maths
<input type="checkbox" name="c1" value="physics" /> Physics
<input type="checkbox" name="c1" value="chemistry" /> Chemistry
<br>
<button onclick="submit">Submit</button>
<!-- input type="submit" value="submit" / -->
<script>
<!---
function valthisform() {
var checkboxs=document.getElementsByName("c1");
var okay=false;
for(var i=0,l=checkboxs.length;i<l;i++) {
if(checkboxs[i].checked) {
okay=true;
break;
}
}
if (!okay) {
alert("Please check a checkbox");
event.preventDefault();
} else {
}
}
-->
</script>
</form>
</body>
</html>
Ответ 6
Множество сложных способов сделать легкую вещь:
<form name="foo" onsubmit="return false">
Ответ 7
Я бы рекомендовал не использовать onsubmit
и вместо этого onsubmit
событие в скрипт.
var submit = document.getElementById("submitButtonId");
if (submit.addEventListener) {
submit.addEventListener("click", returnToPreviousPage);
} else {
submit.attachEvent("onclick", returnToPreviousPage);
}
Затем используйте preventDefault()
(или returnValue = false
для старых браузеров).
function returnToPreviousPage (e) {
e = e || window.event;
// validation code
// if invalid
if (e.preventDefault) {
e.preventDefault();
} else {
e.returnValue = false;
}
}
Ответ 8
Ответы Hemant и Vikram не совсем работали для меня прямо в Chrome. Event.preventDefault(); script помешало отправке страницы независимо от прохождения или отказа проверки. Вместо этого мне пришлось переместить event.preventDefault(); в оператор if следующим образом:
if(check if your conditions are not satisfying)
{
event.preventDefault();
alert("validation failed false");
returnToPreviousPage();
return false;
}
alert("validations passed");
return true;
}
Спасибо Хеманту и Викраму за то, что он поставил меня на правильный путь.
Ответ 9
Допустим, у вас есть форма, подобная этой
<form action="membersDeleteAllData.html" method="post">
<button type="submit" id="btnLoad" onclick="confirmAction(event);">ERASE ALL DATA</button>
</form>
Вот javascript для функции confirmAction
<script type="text/javascript">
function confirmAction(e)
{
var confirmation = confirm("Are you sure about this ?") ;
if (!confirmation)
{
e.preventDefault() ;
returnToPreviousPage();
}
return confirmation ;
}
</script>
Это работает на Firefox, Chrome, Internet Explorer (край), Safari и т.д.
Если это не так, дайте мне знать
Ответ 10
Например, если у вас есть кнопка отправки в форме, чтобы остановить ее протагонирование, просто напишите event.preventDefault(); в функции, вызываемой нажатием кнопки отправки или кнопкой ввода.
Ответ 11
Просто сделай это....
<form>
<!-- Your Input Elements -->
</form>
и здесь идет ваш JQuery
$(document).on('submit', 'form', function(e){
e.preventDefault();
//your code goes here
//100% works
return;
});
Ответ 12
просто используйте следующий код, он будет работать нормально
<form onsubmit="return false;" >