javascript函数被忽略

时间:2013-12-21 02:32:48

标签: javascript html

我希望在我的页面上发生一件非常简单的事情,在用户提交表单之后,在实际提交表单之前必须有一段延迟,但是它似乎不能用于html表单:

<form action='index.php' method='get'>
<input type='submit' value='Reset' name='resetBtn' onClick='PreSubmit(this.form)'>

</form>

javascript函数:

function PreSubmit(form) {
    var func = function () {
        form.submit();
    }
    setTimeout(func, 10000);    
}

所以我真的很喜欢javascript,但是我怎么看,onlick事件必须调用这个javascript函数,它应该等待10秒然后才提交表单并更新页面,但是表单立即提交,为什么?在提交之前如何让它等待?任何形式的帮助将不胜感激

3 个答案:

答案 0 :(得分:2)

添加返回onclick。

onClick='return PreSubmit(this.form)'>

并将return false添加到PreSubmit。

function PreSubmit(form){
    ....
    //this will stop the click event
    return false;
}

所以PreSubmit返回false - &gt; onClick返回false,这将停止提交按钮操作。

http://jsfiddle.net/KVsQ4/

我认为你会考虑另一个问题,如果用户不断点击按钮会发生什么。等待另外10秒(这意味着你应该清除前一个timeID),或者只是禁用它当用户第一次点击它时。

答案 1 :(得分:2)

您需要停止提交按钮的默认行为。很多人都犯了错误的错误来做这件事,但那不是很正确it's important to understand what returning false is doing。这不是最好的方式(不显眼的JS是一个完全不同的主题),但要通过最小的改变来实现你想要的东西,请执行以下操作

HTML:

<form action='index.php' method='get'>
<input type='submit' value='Reset' name='resetBtn' onClick='PreSubmit(event, this.form)'>

</form>

JS:

function PreSubmit(event, form) {
    if (event.preventDefault) { 
       event.preventDefault();
    } 
    else {
       event.returnValue = false; 
    }
    var func = function () {
        form.submit();
    }
    setTimeout(func, 10000);    
}

答案 2 :(得分:0)

您需要将其设为type =“button”,而不是type =“submit”