当前位置: 首页 > wzjs >正文

衡水企业网站建设公司快速生成html模板

衡水企业网站建设公司,快速生成html模板,无限流量网站建设,潍坊专业汽车贴膜饿了么的表单控件,如果存在自定义组件更改了值,例如在el-from中存在原生input组件很有可能没法触发表单校验,下拉框或者弹框组件仍然是报红边框。 这是因为饿了么的输入框或者下拉框更改值的时候会自动触发表单校验,但是封装过后的…

饿了么的表单控件,如果存在自定义组件更改了值,例如在el-from中存在原生input组件很有可能没法触发表单校验,下拉框或者弹框组件仍然是报红边框。
这是因为饿了么的输入框或者下拉框更改值的时候会自动触发表单校验,但是封装过后的组件无法触发校验表单校验。那么此时可以手动触发饿了么的表单校验。

源码分析

在packages/form/src/form-item.vue中,可以找到addValidateEvents方法,该方法是用来给el-form-item的子组件绑定校验事件的,如下:

addValidateEvents() {const rules = this.getRules();if (rules.length || this.required !== undefined) {this.$on('el.form.blur', this.onFieldBlur);this.$on('el.form.change', this.onFieldChange);}
}

在packages/input/src/input.vue中,可以找到el-input发送el.form.blur和el.form.change事件的代码,这里只贴出el.form.change的代码:

watch: {value(val) {this.$nextTick(this.resizeTextarea);if (this.validateEvent) {this.dispatch('ElFormItem', 'el.form.change', [val]);}}
}

这里用了dispatch方法,该方法的代码在src/mixins/emitter.js中:

dispatch(componentName, eventName, params) {var parent = this.$parent || this.$root;var name = parent.$options.componentName;while (parent && (!name || name !== componentName)) {parent = parent.$parent;if (parent) {name = parent.$options.componentName;}}if (parent) {parent.$emit.apply(parent, [eventName].concat(params));}
}

由此可以看出,要触发el-form的校验,需要el-form-item中的子组件去发布el.form.change或el.form.blur等事件,由el-form-item监听该事件,触发表单校验。

解决方案

方法一:在父页面中直接调用表单的校验方法validateField:

watch: {'passwordForm.newPassword': function() {this.$refs.passwordForm.validateField('newPassword')}
}

方法二:在父页面中发布组件的el.form.change等事件:

<input ref="input" @blur="handleBlur">
<script>
export default {methods: {handleBlur (val) {this.$refs.input.$emit('el.form.blur', val)}}
}
</script>

方法三:在子组件中发布el.form.change等事件,此时无需在父页面中做任何处理,其中dispatch方法直接将上面所说的emitter.js中的代码拷贝过来即可:

export default {methods: {dispatch(componentName, eventName, params) {// ... 从emitter.js中拷贝过来的代码},handleInput (e) {this.$emit('input', e.target.value)this.dispatch('ElFormItem', 'el.form.change', [e.target.value])}}
}

以下是我某项目的解决方法,使用的方法2,即找到el-form-item然后触发el.form.change事件。

 methods: {confirm() {this.$emit("confirm", result);this.$nextTick(() => {parent && parent.$emit("el.form.blur", result); // 重点!触发表单校验 el.form.change, el.form.blurparent && parent.$emit("el.form.change", result); // 重点!触发表单校验});},},// 找到el-form-item元素的代码mounted() {let parent = this.$parent;while (parent) { if (parent.$options.name === "ElFormItem") {this.parent = parent;break;}parent = parent.$parent;}
},

原文博客:非el组件/自定义组件触发el-form的校验
个人博客: 自定义组件触发饿了么表单校验


文章转载自:

http://qQsm1Gkx.srprm.cn
http://4CkS7dXL.srprm.cn
http://tiqyKnbn.srprm.cn
http://btZth2WN.srprm.cn
http://SJfQKrnR.srprm.cn
http://uYRSk4c0.srprm.cn
http://oV3S5CVu.srprm.cn
http://y0FwjcyX.srprm.cn
http://dz3XSatr.srprm.cn
http://7MzQhpOM.srprm.cn
http://8JHZ4HZX.srprm.cn
http://CoujK3by.srprm.cn
http://jEemtMez.srprm.cn
http://4xOT2Y6F.srprm.cn
http://nSdL18F0.srprm.cn
http://uo2ANZhK.srprm.cn
http://1egnsuU5.srprm.cn
http://cYcmuibO.srprm.cn
http://Wm1PvNrA.srprm.cn
http://Ef79z5ZS.srprm.cn
http://4Rm9WFoO.srprm.cn
http://tIYisdDa.srprm.cn
http://FS576ji8.srprm.cn
http://SqpidSSb.srprm.cn
http://Izr7pBPK.srprm.cn
http://fuLplu9w.srprm.cn
http://02Oy3FwR.srprm.cn
http://YLSH9NyX.srprm.cn
http://TBJSb8rZ.srprm.cn
http://NKVlb8qm.srprm.cn
http://www.dtcms.com/wzjs/767011.html

相关文章:

  • python开发做网站wordpress分类多重筛选
  • 商家做网站的优点有哪些做壁纸的网站
  • 做美食直播哪个网站好青岛建网站的公司
  • 织梦网站怎么搬家企业网站公司单位有哪些
  • 淘宝网站建设单子好接吗河南县wap网站建设公司
  • 昆明网站建设怎么样wordpress所需系统
  • 做网站挣钱吗公司的企业文化怎么写
  • 网上做造价网站外发加工网站
  • o2o商城网站搭建监理网站
  • 违法网站建设国外服务器想看别人的wordpress博客网站
  • 做外汇消息面的网站做网站的eclip
  • 阿里云自助建站教程php构建网站
  • 长春做网站多少钱建设机械网站方案设计
  • 启闭机闸门的网站建设网站建设做什么科目
  • 如何做登录网站建设人行官方网站
  • 网站域名后缀的意思微信运营商
  • 网站建设构造学习网站建设科
  • 东莞浩智网站建设多少钱陕西省建设监理协会官网站
  • 网站建设推广平台有哪些新蒲建设集团网站
  • 一级网站和二级网站的区别郴州品牌网站建设推广
  • 电子商务网站建设认识专门做摩托车的网站
  • 建网站需要什么软件公司网站后台管理
  • 网站界面设计简单删除hao123主页
  • 现在哪些行业需要建设网站如何查看网站做没做百度推广
  • 徐汇专业做网站wordpress 导航下拉菜单显示5条
  • 租服务器做网站河北省建设集团有限公司网站
  • 英文网站设计哪家好网络营销策略分析案例
  • 手游门户网站模块网站建设报价比较
  • 网站被k申诉上海十大装修公司排名榜单
  • 网站评论设计计算机网络技术 网站建设