2011-10-18 122 views
0

我已经使用JavaScript来添加此特定页面时加载。如何在event.preventDefault();之后提交表单

document.getElementById('commit').addEventListener("click", validateSubmit, 
         false); 

此validateSubmit方法有一些代码,将验证表单数据和 它将首次同时通过单击在该方法来提交形式为此

 function validateSubmit(){ 
      //some code 
      window.addEventListener('submit', newsubmit, true); 
      HTMLFormElement.prototype._submit = HTMLFormElement.prototype.submit; 
      HTMLFormElement.prototype.submit = newsubmit; 
     } 

     function newsubmit(event) { 
      var target = event ? event.target : this; 
      event.preventDefault(); 
      return false; 

     } 

所以,它是防止形式值提交和固定后,我再次尝试点击提交按钮,然后其不工作,在这些值后,在控制台我得到这个错误 -

 "Uncaught TypeError: Cannot call method 'preventDefault' of undefined" 

请帮我... 在此先感谢..

回答

0

我不认为你需要经过这样的痛苦,以防止用户提交不完整的形式。试试这个:

<form name="form1" id="form1" onsubmit="return validateForm()" ....> 
    <input type="text" id="txtName" /> 
</form> 

function validateForm() 
{ 
    //CHECK IF FORM FIELDS CONTAIN VALID VALUES? 
    var formValid=....;//validation logic 

    return formValid; 
} 

现在,如果在验证过程中你发现任何错误,你会formValid变量设置为false否则,如果所有的输入是否正确设置formValidtrue. When form will getas return value from validateForm`功能也不会提交。

+0

感谢这么快就回复 –

+0

感谢这么快就回复,但我的问题是我还没有加入HTML页面本身的代码。我为Google chrome创建了一个扩展,它将首先检查特定的URL,如果找到该URL,那么当用户尝试点击提交按钮时,下面的代码会出现在图片中,然后它会调用validatesubmit函数,并且不会提交已填充值 “document.getElementById('commit')。addEventListener(”click“,validateSubmit,false);” 我无法更改HTML页面代码。因为这不是我的网站:( –

1

尝试从

function newsubmit(event) { 

改变你的函数声明

var newsubmit = function(event) { 

功能已被宣布为一个变量,如果你想使用它作为一个事件侦听器的参数。

0

试试这个:

function validateSubmit(){ 

      window.addEventListener('submit', newsubmit, true); 
      HTMLFormElement.prototype.submit = newsubmit; 
      HTMLFormElement.prototype._submit = HTMLFormElement.prototype.submit; 

     } 

     function newsubmit(event) { 
      var target = event ? event.target : this; 
      event.preventDefault(); 
      return false; 

     } 
相关问题