В качестве кода ниже, при нажатии 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>
Он не показывает предупреждение, потому что функция 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
Событие обработки JS-кода "submit"
он должен инициировать событие отправки, которое вы можете сделать следующим образом:
function login() {
$('#form1').submit();
}
вы можете подать заявку здесь:
$(document).ready(function(){
$('#form1').submit(function () {
alert('submit');
});
});
$('#form1').submit(function (event) { event.preventDefault()