简体   繁体   English

表单 preventDefault 不起作用

[英]Form preventDefault not working

I have a button that submits a hidden form:我有一个提交隐藏表单的按钮:

<a href = "javascript:;" onclick = "document.getElementById('work-for-form').submit();">

Form:形式:

<form id="work-for-form"  action="localhost/update" method="PUT" style="display: none;">
{{ csrf_field() }}
</form>

And my js:还有我的js:

$("#work-for-form").submit(function(event){
    event.preventDefault();
    console.log(event);
});

But the form still loads a new page.但是表单仍然加载一个新页面。

What am i doing wrong?我做错了什么? Thanks谢谢

The onclick event on your a is too strong to prevent the submission of the form.您的 a 上的 onclick 事件太强,无法阻止提交表单。 I would suggest the following to fix this:我会建议以下来解决这个问题:

<a href="javascript:;" >form submit</a>

<form id="work-for-form"  action="/update" method="PUT" style="display: none;">{{ csrf_field() }}</form>

<script>
$("a").on("click",function(){
    $("#work-for-form").submit();
})
$("#work-for-form").submit(function(event){
    alert('intercept');
    event.preventDefault();
    console.log(event);
});
</script>

see also https://jsfiddle.net/9hta6f48/另见https://jsfiddle.net/9hta6f48/

You can use return false or you can use eventListeners您可以使用return false或您可以使用eventListeners

<form onsubmit="alert('stop submit'); return false;" >

Or或者

function mySubmit(){
      alert('Will not submit');
      return false;
   }
</script>

<form onsubmit="return mySubmit();" >

Or event listeners或者事件监听器

var myFuncRef = function(event) { event.preventDefault() }

element.attachEvent('onclick', myFuncRef);

Your code must be inside $(document).ready or must be after the form is rendered,您的代码必须在 $(document).ready 内或必须在表单呈现之后,

$(document).ready(function(){
  $("#work-for-form").submit(function(event){
    event.preventDefault();
    console.log(event);
  });
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM