zoukankan      html  css  js  c++  java
  • ant-design Form.Item normalize在Edge触发两次

    在项目中有的字段要填多个值,通常会用“,”隔开给后端

     测试要求输入中文逗号是不要提示错误,直接替换为英文的

    normalize 组件获取值后进行转换,再放入 Form 中。不支持异步 (value, prevValue, prevValues) => any
    <Form.Item
                    label="来源SIP IP端口:"
                    name="srcIp"
                    normalize={(value, prevValue, prevValues) =>{
                console.log(value);
    if(!value)return ; return value.replace(/,/g,','); }} rules={[ { required: true, validator: (rule, value) => { let ips = value ? value.split(',') : value,reg = /^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]):([1-9]d{1,4})$/; if (!value) { return Promise.reject('请输入来源SIP IP端口!'); } else if (ips.some(ip => reg.test(ip) === false)) { return Promise.reject('格式不对!'); } else { return Promise.resolve(); } } } ]} > <Input placeholder="请输入服务器、IP端口,多个服务器、IP用“,”(英文)隔开"/> </Form.Item>

    chrome:仅触发了一次

     Edge:触发了两次

     在normalize中直接拼接一段字符串,再返回,Edge触发了一次,replace也不是异步操作呀,最后搞不懂整了个折中的办法,避免出现两个逗号就行了

     return content.replace(/,|,,|,,/g,',');
  • 相关阅读:
    CF 429C
    GDOI2015滚粗记
    JLOI2015 城池攻占
    GDKOI2014 石油储备计划
    HNOI2012 射箭
    移动端复制到剪贴板
    再谈mobile web retina 下 1px 边框解决方案
    css去除chrome下select元素默认border-radius
    整理低版本ie兼容问题的解决方案
    移动端按钮交互变色实
  • 原文地址:https://www.cnblogs.com/gxp69/p/14525102.html
Copyright © 2011-2022 走看看