背景

  • 组件的校验需要做自定义,比如一些手机号码,身份证号码,日期的天数等等。

操作

  1. 功能入口

组件自定义校验 - 图1

  1. 提供一些校验内容参考。

校验日期区间选择框间隔不超过90天
  1. function validateRule(value) {
  2. const startdate = value.startDate;
  3. const enddate = value.endDate;
  4. if(startdate != '' && enddate != ''){
  5. var seconds = enddate - startdate;
  6. var days = parseInt(seconds / (1000 * 60 * 60 * 24));
  7. if(days > 90){
  8. return false;
  9. }else{
  10. return true;
  11. }
  12. }else{
  13. return true;
  14. }
  15. }

校验日期选择框最多30天内的日期
  1. function validateRule(value) {
  2. const startdate = Date.parse(new Date());
  3. const enddate = value;
  4. if(startdate != '' && enddate != ''){
  5. var seconds = enddate - startdate;
  6. var days = parseInt(seconds / (1000 * 60 * 60 * 24));
  7. if(days > 30){
  8. return false;
  9. }else{
  10. return true;
  11. }
  12. }else{
  13. return true;
  14. }
  15. }

检验日期选择框可选时间段
  1. function validateRule(value) {
  2. const startdate=Date.parse('2018-11-28 00:00:00');
  3. const enddate=Date.parse('2018-12-5 23:59:59');
  4. const excludestartdate=Date.parse('2018-12-1 00:00:00');
  5. const excludeenddate=Date.parse('2018-12-2 23:59:59');
  6. if(value < startdate){
  7. return false;
  8. }else if( value > enddate ){
  9. return false;
  10. }else{
  11. if(value >= excludestartdate && value <= excludeenddate){
  12. return false;
  13. }else{
  14. return true;
  15. }
  16. }
  17. }

校验两个日期选择框的大小
  1. function validateRule(value,state,ctx) {
  2. const startstate = ctx.store.get('dateField_jso7tqdx');
  3. const endstate = ctx.store.get('dateField_jso7tqdy');
  4. const startDate=startstate.getVal();
  5. const endDate=endstate.getVal();
  6. if(startDate != "" && endDate != "" && endDate > startDate){
  7. return true;
  8. }else{
  9. return false;
  10. }
  11. }

校验人员搜索框的人数
  1. function validateRule(value) {
  2. if(value.length>3){
  3. return false;
  4. }
  5. }

校验的单行输入框只能是小写的英文字母
  1. function validateRule(value) {
  2. const ctx = LeGao.getContext();
  3. ctx.store.get('textField_jw26bjvb').setVal(value.toLowerCase());
  4. var reg = /^[a-zA-Z]*$/g ;
  5. if(reg.test(value)){
  6. return true;
  7. }else{
  8. return false;
  9. }
  10. }

校验上传图片文件的名称
  1. //规则:汉字加数字
  2. function validateRule(value) {
  3. if(value){
  4. for ( var i = 0; i <value.length; i++){
  5. //去除空格
  6. var filename =value[i].name.replace(/\s*/g,"");
  7. if(!/^[\u4e00-\u9f5a]+[0-9a-z]/.test(filename)){
  8. return false;
  9. }
  10. }
  11. }
  12. }

校验上传的图片大小不能超过1M
  1. // 规则:上传的图片大小不能超过1M
  2. function validateRule(value) {
  3. const size = +(value[0] || {}).size || 0;
  4. if (!size) {
  5. return false;
  6. }
  7. const num = 1024.00;
  8. let result = '';
  9. if (size < Math.pow(num, 3)) {
  10. result = (size / Math.pow(num, 2)).toFixed(2);
  11. // 1 表示1M,如果需要验证小于2M、3M,只需要将1改成2、3即可
  12. if (result < 1) {
  13. return false;
  14. }
  15. return true;
  16. }
  17. return true;
  18. }

校验特定手机号码段和座机号码段规则
  1. function validateRule(value) {
  2. var mobile = value;
  3. var tel = /^0\d{2,3}-?\d{7,8}$/;
  4. var phone = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/;
  5. if(mobile.length == 11){//手机号码
  6. if(phone.test(mobile)) {
  7. console.log(mobile);
  8. return true;
  9. }
  10. }else if(mobile.length == 13 && mobile.indexOf("-") != -1 ){//电话号码
  11. if(tel.test(mobile)) {
  12. console.log(mobile);
  13. return true;
  14. }
  15. }
  16. return false;
  17. }

校验身份证号
  1. function validateRule(value) {
  2. var regIdNo = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
  3. if(!regIdNo.test(value)){
  4. return false;
  5. }
  6. }

校验多项选择框/下拉多选框的校验勾选数量
  1. function validateRule(value) {
  2. if (!value) return true;
  3. // 勾选数量小于3时, 提示错误信息
  4. if (value.length < 3) {
  5. return false;
  6. }
  7. // 勾选数量大于5时, 提示错误信息
  8. if (value.length > 5) {
  9. return false;
  10. }
  11. return true;
  12. }

校验数字输入框是否输入的是整数
  1. function validateRule(value) {
  2. return /^(-?\d+)(.\d+)?$/.test(value)
  3. }

校验单行输入框校验只能输入数字
  1. function validateRule(value) {
  2. return /^(-?\d+)(.\d+)?$/.test(value)
  3. }

校验日期的可选范围,当天往后七天之内
  1. function validateRule(value) {
  2. const startdate = Date.parse(new Date());
  3. const enddate = value;
  4. if(startdate != '' && enddate != ''){
  5. var seconds = enddate - startdate;
  6. var days = parseInt(seconds / (1000 * 60 * 60 * 24));
  7. if(days < 7){
  8. return false;
  9. }else{
  10. return true;
  11. }
  12. }else{
  13. return true;
  14. }
  15. }