如何停止使用Javascript重新加载表单?

问题描述:

当用户提交表单时,我想停止表单的默认行为。即它不应该重新加载。以便我可以执行AJAX请求。如何停止使用Javascript重新加载表单?

这里是我使用的代码。

<script type="text/javascript"> 
    function validateForm() 
    { 
     return false; 
    } 
</script> 
<form action="" name="contact" onsubmit="validateForm();"> 
    <input type="text" name="name" value="Enter Your Name..."/> 
    <input type="submit" name="submit"/> 
</form> 

这不会阻止表单被提交或重新加载。我如何实现这一目标?

+0

您不能从AJAX请求返回。 – SLaks 2011-03-01 04:45:05

它需要onsubmit="return validateForm()"

+0

用于防止重新加载/清除表单的短片段:'onsubmit =“返回false;”' – 2016-09-16 08:30:12

你应该用在形式的onsubmit hanlder回报。 试试这个版本:

<script type="text/javascript"> 
    function validateForm() 
    { 
     return false; 
    } 
</script> 
<form action="" name="contact" onsubmit="return validateForm();"> 
    <input type="text" name="name" value="Enter Your Name..."/> 
    <input type="submit" name="submit"/> 

在事件处理中添加回报:

onsubmit="return validateForm();" 

否则功能来执行,但不告诉浏览器停止处理。

可以使用onsubmit属性的建议,更不显眼的方式是通过绑定到你的onsubmit事件的函数的事件对象上使用preventDefault()

function validateForm(e) { 
    if (e.preventDefault) { 
     e.preventDefault(); 
    } 
    e.returnValue = false; // for IE 
} 
如果你绑定事件

这只能倾听表单,而不是内嵌onsubmit

编辑:这里是你如何绑定一个事件监听器到窗体,当被触发时会传递一个Event对象(注意这是W3C风格,这在IE中不起作用,但会给你一个想法):

var form = document.getElementById('myform'); 
form.addEventListener('submit', validateForm, false); 

当触发事件submit,它会调用validateForm函数,传递事件对象。这里有一个关于JavaScript事件一个真正的好文章:

http://www.quirksmode.org/js/introevents.html

+0

这里的e是什么?我需要传递任何参数吗? – 2011-03-01 04:54:00

+0

请参阅我对编辑的回答以获取更多信息。 – 2011-03-01 05:00:43

+0

它在很大程度上帮助了我。谢谢。 :) – 2011-03-01 05:24:41

使用jQuery:

$('form').on('submit', function() { 
    // call functions to handle form 
    return false; 
}); 

基本上与上述相同的解决方案,但我更喜欢把我的JS了我的HTML,连"onsubmit"属性。