valid的条件验证,当goodsspec1 value不空时, goodsspec1, goodsprice1, goodspur1, goodsdate1 ,才需要验证,求指导!

条件valid验证

当goodsspec1 value不空时, goodsspec1, goodsprice1, goodspur1, goodsdate1 ,才需要验证
当goodsspec2 value不空时, goodsspec2, goodsprice2, goodspur2, goodsdate2 ,才需要验证

function ShowStr(x){
 //var Str=document.getElementById(x).value;
  var Str1=$("#goodsspec1").length;
  var Str2=$("#goodsspec2").length;
    //if($("#goodsspec1").length > 0){
    if(Str1>0){
        $('#editWorkForm').scojs_valid({ 
                rules: {
                    goodsspec:['not_empty'],
                    goodsprice:[{regex: /^[1-9]\d*$/ }],
                    goodspur:['not_empty','digit',{regex: /^[1-9]\d*$/ }],
                    goodsdate:['not_empty','digit',{regex: /^\d+$/}]
                    goodsspec1:['not_empty'],                                    //当这value不空时,  goodsspec1, goodsprice1, goodspur1, goodsdate1 ,才需要验证                              
                    goodsprice1:[{regex: /^[1-9]\d*$/ }],
                    goodspur1:['not_empty','digit',{regex: /^[1-9]\d*$/ }],
                    goodsdate1:['not_empty','digit',{regex: /^\d+$/}]
                    goodsspec2:['not_empty'],                       //当这value不空时,  goodsspec2, goodsprice2, goodspur2, goodsdate2 ,才需要验证   
                    goodsprice2:[{regex: /^[1-9]\d*$/ }],
                    goodspur2:['not_empty','digit',{regex: /^[1-9]\d*$/ }],
                    goodsdate2:['not_empty','digit',{regex: /^\d+$/}]
                },
                messages: {
                    goodsspec1: {
                        not_empty: "请输入数量"
                    },
                    goodsprice1: {
                        regex:'请输入1≤整数'
                    },
                    goodsdate1: {
                        not_empty: "请输入货期",
                        regex:'请输入0≤整数'
                    },
                    goodspur1: {
                        not_empty: "请输入纯度",
                        regex:'请输入1≤整数'
                    }
                }, 
                wrapper:'.form-group1'
                ,onSuccess: function(response, validator, form) {
                tipsOp(response.data,response.status);
                    if(response.url){
                      window.location.href=response.url;
                    }
                }
              
        });
    }    
}    

将校验规则变成一个方法的返回值,在方法里进行判断

function rulesvalidate(){
  var Str1=$("#goodsspec1").length;
  var Str2=$("#goodsspec2").length;
  let obj = {}
  if(Str1&&Str2){
    obj = {
      //xxx需要校验的项
      //goodspur:['not_empty','digit',{regex: /^[1-9]\d*$/ }],
      //goodsdate:['not_empty','digit',{regex: /^\d+$/}]
    }
  }else if(Str1){
    obj = {
      //xxx需要校验的项
    }
  }else if(Str2){
    obj = {
      //xxx需要校验的项
    }
  }else{
    obj = {
    //xxx需要校验的项
    }
  }
  return obj
}
function ShowStr(x){
  $('#editWorkForm').scojs_valid({ 
      rules: rulesvalidate(),
  })
}

首先非常感谢原莱_的支持,答复给了我很大帮助。
按照建议的方式尝试几次成功,不太熟悉掌握不好,放弃了。
多条件valid验证太难了,考虑后保持原来统一form一次性验证。
在html中通过show/hide,对输入框进行显示/隐藏控制,也可以达到目的,同时增加隐藏=删除。


            <div class="listx list-j3" style="{if !$arrServiceInfo['spec1']}display:none;{/if}float:left;">
            
              <span class="input-group-addon">规格</span> 
              <input type="text" class="form-control"  id="goodsspec1" name="goodsspec1"  value="{$arrServiceInfo['spec1']}" onchange="ShowStr(this.id)"  >
      
              <span class="input-group-addon">纯度</span>
              <input type="text" id="goodspur1" name="goodspur1" class="form-control" value="{$arrServiceInfo['pur1']}"   onchange="ShowStr(goodsspec1.id)">
            
            <span style="cursor: pointer;">
            <a class="listx list-j3" onclick="ss('j3')" style="color:#FF771C;font-size:14px;font-weight:bold;text-decoration:none;"></a>  
            </span>
    
            </div>
        
            
            <div class="listx list-j4" style="{if !$arrServiceInfo['spec2']}display:none;{/if}float:left;">
        
              <span class="input-group-addon">规格</span> 
              <input type="text" class="form-control"  id="goodsspec2" name="goodsspec2"  value="{$arrServiceInfo['spec2']}"  onchange="ShowStr(this.id)" >
            
              <span class="input-group-addon">纯度</span>
              <input type="text" id="goodspur2" name="goodspur2" class="form-control" value="{$arrServiceInfo['pur2']}" onchange="ShowStr(goodsspec2.id)" >


            <span style="cursor: pointer;">
            <a class="listx list-j4" onclick="ss('j4')" style="color:#FF771C;font-size:14px;font-weight:bold;text-decoration:none;"></a>  
            </span>

            </div>
            

<script type="text/javascript">
  function ss(t){
       if(t == 'j1'){
            $('.list-j3').show();
            $('.list-j4').show();
        }else if(t == 'j3'){
         $("#goodsspec1").attr("value","");
         $('.list-j3').hide();
        }else if(t == 'j4'){
         $("#goodsspec2").attr("value","");
         $('.list-j4').hide();
       }
     }
    
</script>