代码之家  ›  专栏  ›  技术社区  ›  Mister Jojo Łukasz Daniel Mastalerz

为什么窗体在前一个值而不是默认值处调用onreset?

  •  -1
  • Mister Jojo Łukasz Daniel Mastalerz  · 技术社区  · 5 年前

    为什么窗体在前一个值而不是默认值处调用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。

    1 回复  |  直到 5 年前
        1
  •  1
  •   Tyler Roper    5 年前

    onreset 被触发 之前 值会改变。

    而不是使用 重新设置 事件,只需让按钮调用一个函数,该函数重置它并在之后检索值。

    const myForm = document.getElementById('my-Form');
    myForm.onsubmit = e => e.preventDefault();
    
    document.getElementById('btnReset').onclick = () => {
      myForm.reset();
      console.log(myForm.aName.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>