怎樣做淘寶網站建設電商網站平臺搭建
問題
form表單中如果只有一個輸入框,在輸入時按Enter回車鍵會出發(fā)默認事件自動提交表單,該交互是同步發(fā)生的,會導致頁面刷新。
解決思路
有三種解決思路:
1. 增加input輸入框的數量
如果form表單中不止一個input輸入框,那么該表單將不會觸發(fā)表單提交事件。
有時候不一定要增加一個使用的input,我們可以通過增加一個不會顯示的出來的input輸入框處理。
<form><!-- 原本的輸入框 --><input type="text" /><!-- 增加一個不會顯示也不會用上的輸入框 --><input type="hidden">
</form>
2. 阻止input的回車事件
通過監(jiān)聽input元素的回車事件,如果匹配到回車keyCode就不繼續(xù)冒泡執(zhí)行
<form><input type="text" onkeyup="if(event.keyCode==13){return false;}">
</form>
3.直接阻止form表單的表單提交事件
通過監(jiān)聽form元素的表單提交事件,如果返回false將不會觸發(fā)表單提交事件
<form onsubmit="func(); return false;"><!-- 原本的輸入框 --><input type="text" />
</form><script type="text/javascript">
function func() {// 其他處理
}
</script>
針對 vue 的 elementUI 的 el-form 表單提交處理
W3C 標準中有如下規(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.
即:當一個 form 元素中只有一個輸入框時,在該輸入框中按下回車應提交該表單。如果希望阻止這一默認行為,可以在<el-form>
標簽上添加@submit.native.prevent
。
<template><el-form ref="form" :model="form" label-width="80px" @submit.native.prevent><!-- 加上 @submit.native.prevent 阻止默認提交事件 --><el-form-item label="活動名稱"><el-input v-model="form.name"></el-input></el-form-item></el-form><el-form-item><el-button type="primary" @click="onSubmit">立即創(chuàng)建</el-button></el-form-item>
</template><script>export default {data() {return {form: { name: '' }}},methods: {onSubmit() {console.log('submit!');}}}
</script>