2011-10-26 28 views
0

我正在尝试用确认窗口重置窗体。我的HTML看起来像:表单在javascript中重置

<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(); 
    } 
} 

当我击取消确认窗口,形式仍然被重置,我不知道为什么。谢谢。

回答

2

如果我理解这个问题,关键是要绕过默认行为,并使用您的函数来代替。您可以通过向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?');"/> 

这仅仅是一个“做什么”,但如果你想获得更多的信息,还有在这些线程一些好的信息:

2

由于您的输入类型已重置,它仍会重置。作出这样的按钮或东西,只是使用形式的复位方法,像这样:

document.form1.reset(); 

MDN Docs

0

另一种方法:

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