lay-verify="required"影藏的表单不验证

提问 未结 6 225
laozuo666
laozuo666 2019-5-16
悬赏:20飞吻
版本:layui layui-v2.4.5 浏览器:谷歌
layui 在表单中加入了lay-verify="required"后,在提交表单的时候它会验证表单是否为空值,如果为空值,不让提交,但是,如果这个input是一个影藏表单呢,由于业务的需求,影藏的表单不要验证,但是layui也给验证了,怎么处理,layui有没有相应的处理机制,例如不可见的不用验证,只验证可见的input框@贤心
回帖
  • 哈哈哈哈,我也踩过这个坑了,别用hidden,直接remove掉这个元素
    0 回复
  • laozuo666
    2019-5-16
    remove不行啊
    0 回复
  • 单这一项不要required不就好了?
    0 回复
  • laozuo666
    2019-5-17
    解决了,自定义验证,我这里还做了去掉空格的操作
     form.verify({
    min : function(value, item){
    if(!(isNumber(value))){
    return "请输入正确的数字!";
    }
    }
    ,va : function(value, item){
    if($tool.isBlank($.trim(value))){
    var name=item.name;
    var hideen=$(item).is(':hidden');
    if(!hideen){
    return "必填项不能为空";
    }
    }
    }
    });
    就是判断当前元素是不是隐藏状态,如果是的话就不做非空判断,我这里$tool.isBlan是一个工具类方法,用来判断字符串是不是为空,请注意在页面加入 lay-verify="va"的自定义验证即可,解决了layui对内置默认对隐藏的元素进行判断的不足!
    0 回复
  • laozuo666
    2019-5-17
    @哑巴湖大大水怪 不要这个不验证了,我这个是隐藏了就不验证,不隐藏就验证,你要是去掉就永远都不会验证了
    0 回复
  • laozuo666
    2019-5-17
    但是我这个方法对select是无效的,jquery的hide方法只是在相应DOM上面增加了样式:display: none
    而option不是可绘制的DOM,所以使用hide方法是无效的
    两种解决方案:
    1.在option标签上面加上disabled="disabled"属性,表示不可用,这种方案只是让option不能选择,但没有隐藏掉
    2.如果想隐藏掉,只能把option从DOM树中去除,然后对去除的option进行缓存,在要显示的时候再将option从缓存中取出加入DOM树中
    所以我做了单独验证
    0 回复