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