防止页面内的button在点击时刷新页面

我在使用窗体中的button时遇到了一个问题。 我想要那个button来调用函数。 它确实有,但是会导致不必要的结果刷新页面。

我简单的代码是这样的

<form method="POST"> <button name="data" onclick="getData()">Click</button> </form> 

点击button,函数被调用刷新页面,这将重置所有我以前的请求,影响当前页面,这是前一个请求的结果。

我应该怎么做,以防止页面刷新?

getData()返回false。 这将解决它。

 <form method="POST"> <button name="data" onclick="return getData()">Click</button> </form> 

添加type =“button”到button。

 <button name="data" type="button" onclick="getData()">Click</button> 

一个button的“type”的默认值是“submit”,它自己发布你的案例中的表单,并使其看起来像一个刷新。

HTML

 <form onsubmit="return false;" id="myForm"> </form> 

jQuery的

 $('#myForm').submit(function() { doSomething(); }); 

问题是它触发表单提交。 如果您使getData函数return false则应该停止提交表单。

或者,也可以使用事件对象的preventDefault方法:

 function getData(e) { e.preventDefault(); } 
 <form method="POST"> <button name="data" onclick="getData()">Click</button> </form> 

而不是使用button标签,使用input标签。 喜欢这个,

 <form method="POST"> <input type = "button" name="data" onclick="getData()" value="Click"> </form> 

所有你需要做的是把一个types的标签,并使typesbutton。

 <button id="btnId" type="button">Hide/Show</button> 

在Firefox中出于任何原因,即使我已经return false;myform.preventDefault(); 在函数中,它在函数运行后刷新页面。 我不知道这是否是一个好的做法,但它适用于我,我插入javascript:this.preventDefault(); 在action属性中。

正如我所说,我尝试了所有其他的build议,他们在所有的浏览器,但火狐浏览器,如果你有相同的问题,罚款尝试在action属性中添加防止事件javascript:return false;javascript:this.preventDefault(); 。 不要用javascript:void(0); 这会破坏你的代码。 不要问我为什么:-)。

我不认为这是一个很好的方法,但在我的情况下,我没有别的select。

更新:

如果您在处理完ajax后收到错误消息,请删除属性操作,然后在onsubmit属性中执行您的函数,然后执行错误返回:

onsubmit="functionToRun(); return false;"

我不知道为什么所有这些与Firefox的麻烦,但希望这个工程。

一种JavaScript方法来禁用button本身

 document.getElementById("ID NAME").disabled = true; 

一旦所有表单域都满足您的条件,您可以重新启用该button

使用JQuery将会是这样的

 $( "#ID NAME" ).prop( "disabled", true); 

你可以使用ajax和jquery来解决这个问题:

 <script> function getData() { $.ajax({ url : "/urlpattern", type : "post", success : function(data) { alert("success"); } }); } </script> <form method="POST"> <button name="data" type="button" onclick="getData()">Click</button> </form> 

返回function在所有情况下都不起作用。 我试过这个:

 <button id="Reset" class="Button-class" onclick="return Reset()">Show result</button> 

它没有为我工作。

我试图在函数内部返回false,并为我工作。

 function Reset() { . . . return false; }