为什么表单在上一个值而不是默认值时调用onreset?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么表单在上一个值而不是默认值时调用onreset?相关的知识,希望对你有一定的参考价值。

为什么表单在前一个值而不是默认值时调用onreset?它是强制在重置内获取默认值的参数吗?

解释代码:

const myForm = document.getElementById('my-Form')

myForm.onsubmit=e=> {
  e.preventDefault()  // disable for  test
}
myForm.onreset=_=> {
  console.log( 'onReset event, aName = ', myForm.aName.value )
} 

document.getElementById('bt-Test').onclick=_=> {
  myForm.aName.value = 'other value'
  myForm.reset()  // didn't write 'Default value'
}
<form id="my-Form" action="xxx" method="post">
  <input type="text" name="aName" value="Default value" >
 <br><br> 
  <button type="reset">reset</button>
</form>
<br> 
<button type="button" id="bt-Test">Test button</button>

[[测试按钮]不显示'默认值'(正如我所期望的,并且需要)

我的表单有120个带有计算的条目,并且默认值是由php设置的,我是否可以放入setTimeout?

请只提供JS答案,不提供jQuery。

答案

[onreset被触发之前值更改。

而不是使用onreset事件,只需让您的按钮调用一个函数即可将其重置并在之后返回值。

const myForm = document.getElementById('my-Form')

myForm.onsubmit=e=> {
  e.preventDefault()  // disable for  test
}

document.getElementById('btnReset').onclick=_=> {
  myForm.reset();
  console.log(myForm.aName.value);
}

document.getElementById('bt-Test').onclick=_=> {
  myForm.aName.value = 'other value'
  myForm.reset()  // didn't write 'Default value'
}
<form id="my-Form" action="xxx" method="post">
  <input type="text" name="aName" value="Default value" >
 <br><br> 
  <button id="btnReset" type="reset">reset</button>
</form>
<br> 
<button type="button" id="bt-Test">Test button</button>

以上是关于为什么表单在上一个值而不是默认值时调用onreset?的主要内容,如果未能解决你的问题,请参考以下文章

使用viewData值而不是ModelData手动设置表单数据

如何设置TextBox空字符串的默认值而不是null

将表单的所有输入重置为默认值而不重新加载

带有 Select Widget 的 Django ModelForm - 使用 object.uid 作为默认选项值而不是 object.id

从表单中的选择列表中发送值而不是键

表单提交后,在输入中显示新值而不是缓存值