javascript中的表单重置

form resetting in javascript

本文关键字:表单 javascript      更新时间:2023-09-26

我试图重置一个窗体与确认窗口。我的html看起来像:

<input type="reset" value="Reset" onclick="showReset();"/>

then for my javascript:

function doReset() {
    var formElements = document1.form1.elements;
    for (var i = 0; i < formElements.length; i++) {
        formElements[i].value = "";
        if (formElements[i].checked) {
            formElements[i].checked = false;
        }
    }
}
function showReset() {
    if (window.confirm("Do you really want to reset the form?")) {
        doReset();
    }
}

当我在确认窗口上点击取消时,表单仍然会重置,我不知道为什么。谢谢。

如果我理解了这个问题,关键是绕过默认行为并使用您的函数。你可以通过在showReset()函数中添加一个返回false来阻止默认的按钮动作。

function showReset(e) {
    if (window.confirm("Do you really want to reset the form?")) {
        doReset();
    }
    return false;
}

同时,确保onclick处理程序返回showReset的结果:

<input type="reset" value="Reset" onclick="return showReset();"/>

或者,如果你想要默认的浏览器行为,只想要一个确认对话框,为什么不只使用确认呢?像这样:

<input type="reset" value="Reset" onclick="return window.confirm('Do you really want to reset the form?');"/>

这只是一个"做什么",但如果你想得到更多的信息,有一些好的信息在这些线程:

  • event.preventDefault()与return false
  • 添加'返回false'到单击事件侦听器?

它仍然会重置,因为您的输入类型已重置。创建按钮之类的然后使用表单的重置方法,像这样:

document.form1.reset();

MDN文档

另一种方法:

var r=confirm("Do you really want to reset the form?");  
if(r==true){  
//Reset logic  
}else{  
//Dont reset logic  
}