表单提交后页面重新加载,尽管无效和错误返回

时间:2013-01-28 17:53:12

标签: javascript html forms validation reload

我开始研究JS中任务列表制作者的骨架,并且在注意到通过表单提交任务后整个页面被重新加载之前我没有太远,所以我无法设置文本而不会立即消失。

我在HTML的表单中使用了novalidate,我在我的函数中返回false,在表单提交时调用,所以我不确定问题是什么。我的代码附在此CodePen中:http://cdpn.io/JArfm

一些相关代码:

HTML:

<body>
    <form action="#" method="post" id="theForm" novalidate="">
        <fieldset><legend>To-dolist</legend>
            <p>Add things to-do on your list</p>
            <div class="addTasks"><label for="addTask">Event name:</label><input type="text" name="addTask" id="addTask" value="addTask"></div>
            <div><input type="submit" value="Add task!" id="submit"></div>
            <div id="output"></div>
        </fieldset>
    </form>
</body>

JS:

(function(){

    function addTask(e){
    'use strict';

    if (typeof e == 'undefined') e = window.event;

    var task = U.$('addTask').value;

    U.setText('output', task);
    return false;
    }


    window.onload = function(){
        "use strict";

        U.addEvent(U.$('theForm'), "submit", addTask);
    };
})();

2 个答案:

答案 0 :(得分:1)

在使用传统的事件注册模型(element.onsubmit = doThis;)时,在事件处理函数中显然返回false只能正确停止表单提交。由于我使用addEventListenerattachEvent函数,处理此问题的正确方法(不修改标记)是将其添加到事件处理函数的末尾:

if (e.preventDefault) {
    e.preventDefault();
} else {
    e.returnValue = false;
}
return false;

调用preventDefault方法或将returnValue设置为false(适用于&lt; IE9)可有效阻止表单提交。

答案 1 :(得分:0)

阻止输入按钮的默认操作。您可以通过JQuery的preventDefault()函数执行此操作。或者只需<form onsubmit="return false;"> ... </form>