elementUI中input回車觸發(fā)頁(yè)面刷新問(wèn)題與解決方法

原因:elementUI中的當(dāng)el-form表單只存在一個(gè)el-input框時(shí),會(huì)觸發(fā)表單的默認(rèn)提交事件,element也給出了解釋

W3C 標(biāo)準(zhǔn)中有如下規(guī)定
When there is only one single-line text input field in a form, the user agent should accept Enter in that field as a request to submit the form.
即:當(dāng)一個(gè) form 元素中只有一個(gè)輸入框時(shí),在該輸入框中按下回車應(yīng)提交該表單。

例:el-form內(nèi)單el-input觸發(fā)頁(yè)面刷新

<el-form :model="form" ref="form" label-width="200px" class="form">
  <el-form-item
    label="姓名"
    prop="name"
  >
    <el-input v-model.number="form.name"></el-input>
  </el-form-item>
  <el-form-item>
    <el-button type="primary" @click="submit('form')">提交</el-button>
    <el-button @click="reset('form')">重置</el-button>
  </el-form-item>
</el-form>

解決方法:element也給出了解決方法

  • 如果希望阻止這一默認(rèn)行為,可以在 <el-form> 標(biāo)簽上添加@submit.native.prevent
<el-form
  :model="form"
  ref="form"
  label-width="200px"
  class="form"
  @submit.native.prevent
>
  <el-form-item
    label="姓名"
    prop="name"
  >
    <el-input v-model.number="form.name"></el-input>
  </el-form-item>
  <el-form-item>
    <el-button type="primary" @click="submit('form')">提交</el-button>
    <el-button @click="reset('form')">重置</el-button>
  </el-form-item>
</el-form>

官方給出的只是阻止了這一默認(rèn)行為。當(dāng)需要回車來(lái)提交表單時(shí)可以通過(guò)下面這種操作來(lái)進(jìn)行解決

<el-form
  :model="form"
  ref="form"
  label-width="200px"
  class="form"
  @submit.native.prevent="() => submit('form')"
>
  <el-form-item
    label="姓名"
    prop="name"
  >
    <el-input v-model.number="form.name"></el-input>
  </el-form-item>
  <el-form-item>
    <el-button type="primary" native-type="submit">提交</el-button>
    <el-button @click="reset('form')">重置</el-button>
  </el-form-item>
</el-form>
//注意事項(xiàng)
el-form 方式 確保使用 @submit.native.prevent 阻止原生事件,執(zhí)行方法為搜索按鈕按click事件
[確保方法調(diào)用不丟參數(shù)]
搜索按鈕 - 確保被包裹在 el-form 中
搜索按鈕 - 確保按鈕的click事件去除掉
搜索按鈕 - 確保增加 native-type="submit" 屬性

那elementUI的解決了, 原生的form表單的單input和form包裹el-input回車刷新的問(wèn)題也一樣可以解決

1.在form表單內(nèi)再增加一個(gè)隱藏的input框

①通過(guò)hidden定義隱藏的輸入字段

<form>
  <input type="hidden" value="1"></input>
</form>

②通過(guò)css樣式進(jìn)行隱藏

<form>
  <input type="text" style="display:none"></input>
</form>

2.去掉輸入框的回車事件(根據(jù)需求來(lái)定,有的需要回車事件提交表單來(lái)查詢或者執(zhí)行其他操作則該方法不適用)

<form>
  <input type="text" onkeydown="ClearSubmit(e)"></input>
</form>
<script>
function ClearSubmit(e) {
  if (e.keyCode == ) {
      return false;
  }
}
</script>

3.阻止表單默認(rèn)提交事件(下面例子是以form表單包裹el-input,解決 el-form中el-input回車頁(yè)面刷新的問(wèn)題 原生form內(nèi)的input可用onsubmit句柄返回false來(lái)解決)

<form @submit.prevent="() => getList()">
  <el-input V-model="inputValue">
  </el-input>
  <el-button type="primary" native-type="submit"> {{"提交"}} </el-button>
  <el-button @click="reset">{{ $t(重置') }}</el-button>
</form>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容