我正在尝试使用确认窗口重置表单。我的html看起来像:

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


然后对于我的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()函数添加return 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() vs. return false
What's the effect of adding 'return false' to a click event listener?

10-05 20:39
查看更多