magento2 前端表单验证
来源:互联网 发布:ubuntu16.04安装mysql 编辑:程序博客网 时间:2024/06/05 17:49
添加一个验证器
require([ "jquery", "mage/validation", "mage/translate"], function($){ $.each({ 'validate-custom': [ function (value, element, params) { var isVaild = false; return isVaild; }, 'message: hello world.' ] }, function (i, rule) { rule.unshift(i); $.validator.addMethod.apply($.validator, rule); });});
元素调用
<form class="form" data-mage-init='{"validation":{}}'> <input type="text" data-validate="{required:true, 'validate-custom':true}"/></form>
ajax验证器
<input type="text" data-validate="{required:true, remote:'ajax.php'}"/>
ajax.php要返回json的'true'表示验证成功,否则返回提交信息。以下为例:
echo \Zend_Json(true);echo \Zend_Json('message');
应用于knockoutjs template
validation是jquery plugin,所以在knockoutjs template里添加 data-mage-init='{"validation":{}}'>
不会有效,需要使用knockoutjs custom bingings方案,官方参考文档:http://knockoutjs.com/documen...
form.js
define( ['ko', 'jquery', 'uiComponent', 'mage/validation'], function (ko, $, Component) { 'use strict'; ko.bindingHandlers.validation = { init: function(element, valueAccessor) { if(valueAccessor()) { $(element).validation(); } } }; return Component.extend({ defaults: { template: 'Vendor_Module/form', name: '' }, /** Initialize observable properties */ initObservable: function () { this._super() .observe('name'); return this; } }); });
form.html
<form method="post" data-bind="validation: true"> <div class="field required"> <label class="label" for="name"> <span>Name:</span> </label> <div class="control"> <input id="name" type="text" class="input-text" data-validate="{required:true}" /> </div> </div> <input type="submit" class="action primary black" value="Submit" /></form>
提示信息位置
可以编写errorPlacement函数来确定信息位置,mage有默认的errorPlacement,即input父级.addon元素的父级元素里面显示提示,以下为例:
<div> <div class="addon"> <input type="text" data-validate="{required:true, 'validate-custom':true}"/> </div> <!-- 将会在这里提示 --></div>
要注意有没有mixins,mage的一些mixins会重写errorPlacement,让以上位置失效。例如 Magento_CustomerCustomAttributes/error-placement 就会让addon失效。
javascript触发验证
mage/validation 默认会捕抓form submit执行时进行表单验证,但有些比较复杂的情况,需要javascript自主触发表单验证,可用以下方式:
require([ "jquery", "mage/validation"], function($){ var $form = $('#form-xxxx'); $form.validation(); if(!$form.valid()) { // 如果验证失败 }});
已知常见问题
- 每个需要验证的元素必须有name属性,否则不会生效
- 每个需要验证的元素必须有独立单一的外包围层,并且不能与其它元素共用,否则出现的message可能无法被隐藏并出现多行一样的message
阅读全文
0 0
- magento2 前端表单验证
- js 表单前端验证
- 前端表单验证插件
- anular前端表单验证
- [js]前端表单验证
- 数据验证【web前端,表单】
- WEB前端-JQuery-表单验证
- form表单提交,前端验证
- js 前端验证表单输入
- 前端表单js验证笔记
- php 表单提交 表单前端验证
- PHP前端后端表单数据验证(一)
- 表单前端验证类(author:tsh)
- 表单前端验证+ajax异步请求
- [Web前端]梳理-HTML5.3.表单验证
- Web前端-表单及时验证(Jquery)
- 【前端组件】bootstrapValidator表单验证组件实践
- 利用javaScript实现前端表单验证
- Qt学习笔记——窗口的布局
- Hive之 load的使用注意事项
- Android Studio启动提示Unable to access Android SDK add-on list
- ffmpeg常用命令总结及使用入门指南
- Getting Error
- magento2 前端表单验证
- 你好,CSDN
- Hadoop伪分布式搭建笔记记录
- 9月25日云栖精选夜读:阿里云发布自研商用关系型数据库POLARDB
- 下拉选择框的代码实现
- 推荐一些深度学习比较好的文章
- ros::spin() 和 ros::spinOnce() 区别及详解
- 动态代理与AOP(2)
- Android设置ListView的分割线长度