Код 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;" >