Skip to content

ElementPlus 遇到的问题

  1. ElForm里面只有一个input时按回车会刷新整个页面 原因:当el-form表单里面只有一个input时,回车会触发表单提交的默认事件

W3C 标准中有如下规定:这并不是只有ElementPlus会遇到此问题 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 元素中只有一个输入框时,在该输入框中按下回车应提交该表单。

解决:阻止表单提交默认事件

js
<el-form @submit.native.prevent>
...
</el-form>
//jsx写法
import { withModifiers } from 'vue';
<ElForm inline onSubmit={[withModifiers(() => { }, ['native', 'prevent'])]}>
</ElForm>
  1. ElInput没有回车事件,onChange事件在内容没有变化时无法触发 解决:vue语法可以使用事件修饰符enter来解决 jsx语法无法使用修饰符(写一个自定义指令,按enter触发)
js
//指令
export default {
  mounted: (el, binding) => {
    el.onkeyup = (e) => {
      const inputValue = el.getElementsByClassName('el-input__inner')[0].value
      if (e.keyCode === 13 && inputValue.trim()) {
        binding.value()
      }
    }
  },
};
//使用 v-keyup={触发事件}
<ElInput v-keyup={getDataSource}/>
  1. element-plus的指令v-loading问题
js
 //通常情况在使用template模板的情况下 v-loading可直接使用 但是在jsx中使用是会报错
 <template>
    <div v-loading='true'></div>
 </template>
 //解决:main.js 注册ElLoading
 import { ElLoading } from "element-plus";
 app.use(ElLoading)