2014-10-30 72 views
0

我试图阻止表单被提交,但即使警报已触发,表单仍在提交。这是我的Javascript代码(简化为必需品):表单仍在提交

 if(status == 1) { 
      alert("Test"); 
      e.preventDefault(); 
      e.stopPropagation(); 
      var elem = document.getElementById("error"); 
      if(elem) { 
       elem.parentNode.removeChild(elem); 
      } 
      var span = document.createElement("span"); 
      span.className = "error_class"; 
      span.id = "error"; 
      span.innerHTML = "Please try again."; 
      document.getElementById("field").appendChild(span); 
      return false; 
     } 

我正在使用Firefox测试版和Google Chrome测试版进行测试。有人能告诉我什么是缺少的?上面的代码是分配给按钮的事件侦听器的函数的一部分。

+2

这个事件监听器是如何附加的,并* *什么*事件? – 2014-10-30 20:07:51

+0

我使用addEventListener附加了事件并将其分配给按钮的单击事件。 – user2604185 2014-10-30 20:08:39

+2

发布实际处理程序和相关的html。 – tymeJV 2014-10-30 20:12:15

回答

0

感谢JasonK的回答,我做了一些额外的研究并找到了解决方案。我张贴新的代码做同样的事情与前一个:

e.preventDefault(); 
e.stopPropagation(); 
if(status == 1) { 
    var elem = document.getElementById("error"); 
    if(elem) { 
     elem.parentNode.removeChild(elem); 
    } 
    var span = document.createElement("span"); 
    span.className = "error_class"; 
    span.id = "error"; 
    span.innerHTML = "Please try again."; 
    document.getElementById("field").appendChild(span); 
    return false; 
}else{ 
    document.getElementById("form").submit(); 
} 

在这段代码中,主要的区别是,我打电话e.preventDefault()和e.stopPropagation()在顶部一旦事件被调用,函数就会被调用。然后,我使用submit()方法,如果status不是1,表单仍然被提交。我希望我能够解释得很充分,这可能会帮助其他人,因为这是我的第一个答案。

0

这将这样的伎俩:

$('form').submit(function(e) { 
    e.preventDefault(); 
    //Do your stuff 
    alert('Form was not submitted!'); 
}); 

或者你可以附上的onclick监听器提交按钮

$('form .submit-button').click(function(e) { 
    e.preventDefault(); 
    //Do your stuff 
    alert('Form was not submitted!'); 
}); 

希望这有助于。如果没有,向我们展示更多代码并使用控制台检查错误。

+1

你能给我一个标准的Javascript方式吗? – user2604185 2014-10-30 20:15:25

+1

没有提到在问题中使用jQuery。 – 2014-10-30 20:17:55

+0

是的,我现在看到,工作很忙。简单地用'return false'代替'e.preventDefault()',就我所知,它非常简单。 – JasonK 2014-10-30 20:21:31