首页 > 其他分享 >wordpress 插件 woocommerce自定义订单信息验证

wordpress 插件 woocommerce自定义订单信息验证

时间:2023-07-27 18:55:48浏览次数:38  
标签:插件 woocommerce const 自定义 wrapper invalid id

  1. 使用php钩子函数增加自定义验证
add_action('woocommerce_after_checkout_validation', function ($fields){
  if ($fields['billing_phone'] && !preg_match('/^((\+1|1)?( |-)?)?(\([2-9][0-9]{2}\)|[2-9][0-9]{2})( |-)?([2-9][0-9]{2}( |-)?[0-9]{4})$/', $fields['billing_phone'])){
    wc_add_notice(__('<strong>Billing Phone</strong> is invalidate.'), 'error');
  }
}, 10, 1 );
  1. 使用js进行输入框失焦校验,修改验证后样式
jQuery(function($){
      // 正则验证
      const validateList = {
        '#billing_phone': /^((\+1|1)?( |-)?)?(\([2-9][0-9]{2}\)|[2-9][0-9]{2})( |-)?([2-9][0-9]{2}( |-)?[0-9]{4})$/
      }
	  // 失焦和触发验证时进行样式和自定义校验
	  $(input).on('blur validate', function () {
		  const id = `#${this.getAttribute('id')}`
		  const wrapper = $(this).closest('.form-row');

		  // 等待checkout.js 触发完validate_field修改样式
		  setTimeout(() => {// 重点,需要等待先触发插件的校验后再进行样式修改
			  if (!validateList[id].test($(this).val())) {
				  wrapper.removeClass('woocommerce-validated').addClass('woocommerce-invalid')
			  } else {
				  wrapper.removeClass('woocommerce-invalid').addClass('woocommerce-validated')
			  }
		  }, 100);
	  })

	// 聚焦消除样式
	$(input).on('focus',function () {
		const id = this.getAttribute('id')
		const wrapper = $(`#${id}_field`)

		if (wrapper.hasClass('woocommerce-invalid')) {
			wrapper.removeClass('woocommerce-invalid')
		}
	})
    });

标签:插件,woocommerce,const,自定义,wrapper,invalid,id
From: https://www.cnblogs.com/fsgljk/p/17585782.html

相关文章

  • 2023-7-27 WPF自定义命名空间在xaml中的使用
    xaml自定义命名空间【作者】长生为啥要用自定义命名空间这是常见的几种命名空间xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:Rxsfadsf"xmlns:s......
  • 获取Jenkins默认ftp插件创建的主机密码
    场景:上任Jenkins管理员离职,它默认ftp插件创建的主机密码并没有交接到你手上。解决办法:直接使用pipeline解决。代码:pipeline{  agentany  stages{        stage('getftppassword'){      agentnone      steps{    ......
  • @GeneratedValue 和 @GenericGenerator注解----自定义主键生成策略
    @GeneratedValue注解存在的意义主要就是为一个实体生成一个唯一标识的主键 https://blog.csdn.net/sswqzx/article/details/84337921https://blog.csdn.net/u011781521/article/details/72210980......
  • 定制化SOLIDWORKS插件开发服务流程解析
    SOLIDWORKS是一套三维设计软件,采用特征建模、变量化驱动可方便地实现三维建模、装配和生成工程图。SOLIDWORKS软件本身所具有的交互方式,可以使用户对已生成模型的尺寸、几何轮廓和相互约束关系随时进行修改,而不需要编程。SOLIDWORKS软件本身的方程式可以实现简单的参数逻辑变......
  • 画面速率调整——Twixtor插件的使用
    安装Twixtor最后输出选择high高画质但需要渲染,预览的用Sloppy然后通过打关键帧来做到变速的效果......
  • k8s中如何固定一个pod的IP地址?该集群网络插件是calico
    1、首先查看calico的CIDR地址范围[root@nccztsjb-node-17~]#calicoctlgetippoolNAMECIDRSELECTORdefault-pool172.23.0.0/16all() 2、然后呢,在这个地址范围内,给pod选择一个固定的IP地址比如:172.23.45.27 通过在pod中加入annotat......
  • 自定义过滤器写法示例
    点击查看代码@Component@Slf4j@RequiredArgsConstructorpublicclassCustomFilterextendsOncePerRequestFilter{privatefinalObjectMapperobjectMapper;/***指定要放行的接口路径*/privatestaticfinalString[]ALLOWED_PATHS={......
  • Jmeter45 Dubbo Sampler 插件及其教程
    转载Jmeter(五十)DubboSampler-紫陌花间客-博客园(cnblogs.com) 一、前言随着分布式普及,日常工作中多少会接触到dubbo,对于dubbo接口的调用或者压测等等。调用最简单的方式便是telnet,或者泛化调用的方式。进入telnet命令行,invoke对应方法以及传入对应的参数即可。当然......
  • 9个必备的vscode插件利器,看看哪些你在用?
    大家好,我是程序视点的小二哥正所谓:工欲善其事,必先利其器作为一名前端开发者,vscode想必大家应该都接触过,就像大多数IDE一样,VSCode也有一个扩展和主题市场,包含了数以千计质量不同的插件。作为一名熟练掌握各种前端开发工具安装和卸载的小二哥来说,为大家安利好玩有用的工具插件......
  • vue--day46---组件自定义事件的解绑
    查看vue版本命令npmlistvue1.App.vue<template><div><h1>{{msg}}</h1><!--通过父组件给子组件传递函数的props实现子给父传数据--><School:receiveSchoolName="receiveSchoolName"></School><!--v-on在student组件标签上所以说是在给......