Разница между отправкой формы из внутренней формы и внешней формы?

0

В качестве кода ниже, при нажатии btnInner, alert 'submit', нажмите btnOuter, нет предупреждения.
Затем нажмите btnInner, дважды нажмите.

обновить.

Сначала нажмите btnOuter n раз, нет предупреждения, затем нажмите btnInner, оповещение n + 1 раз.

Я хочу знать, почему?

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script src="jquery-1.9.1.min.js" type="text/javascript"></script>
    <script type="text/javascript">
    function login() {
        $('#form1').submit(function () {
            alert('submit');
        });
        //alert("submit after");
    }
    </script>
</head>
<body>
    <form id="form1" action="login.html">
        <button id="btnInner" onclick="login()">inner submit</button>
    </form>
    <button id="btnOuter" onclick="login()">outer submit</button>
</body>
</html>
  • 0
    Просто сделайте $('#form1').submit(function (event) { event.preventDefault()
Теги:
forms

2 ответа

1
Лучший ответ

Он не показывает предупреждение, потому что функция login() в btnOuter только прикрепляет событие # form1 submit, но функция в btnInner не только присоединяет событие, но также вызывает событие, потому что находится внутри формы как <button> элемент.

Если вы поместите функцию login() в элемент <a> внутри формы, она только присоединяет это событие и не будет запускать какое-либо событие отправки, потому что <a> связано как ссылка не отправляет действие формы.

Пример:

<form id="form1" action="#">
    <a href="#" onclick="login()">Attach event</a>
    <button id="btnInner">Trigger event</button>
</form>

Когда вы нажмете ссылку "Прикрепить событие", вы присоедините событие к форме, затем появится предупреждение, если вы нажмете кнопку "Trigger event ". Пример в реальном времени: http://plnkr.co/edit/6r6TViWcxDOVhuiC6Va3?p=preview

0

Событие обработки JS-кода "submit"

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

 function login() {
        $('#form1').submit();      

    }

вы можете подать заявку здесь:

$(document).ready(function(){
 $('#form1').submit(function () {
            alert('submit');
        });
});
  • 0
    это, не отвечает на то, что под сомнение @san, я хочу знать, почему? Часть, это простой обходной путь, который не является предложением этого вопроса.
  • 0
    Ответ таков: вторая кнопка не запускает отправку
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню