如何在event.preventDefault();?之后提交表单

时间:2011-10-18 16:53:34

标签: javascript

我已经使用javascript在特定页面加载时添加了这个。

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"

请帮帮我... 提前谢谢..

3 个答案:

答案 0 :(得分:1)

尝试从

更改功能声明
function newsubmit(event) {

var newsubmit = function(event) {

如果要将函数用作事件侦听器的参数,则必须将该函数声明为变量。

答案 1 :(得分: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,否则如果所有输入都正确,则将formValid设置为true. When form will get false as return value from validateForm`函数不会提交。

答案 2 :(得分: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;

        }