Los componentes de Avue o Element-UI modifican dinámicamente las reglas de validación de reglas o modifican las reglas de validación de reglas según las condiciones.

Los componentes AVUE o el-form modifican dinámicamente las reglas de validación de reglas

Descripción del problema

Modifique las reglas de validación de acuerdo con las condiciones: si A está vacío en el formulario el, entonces B puede estar vacío. Si A tiene un valor, entonces se requiere B. Cambie dinámicamente las reglas de validación de B.

Principios de resolución de problemas

despegar:

En el evento de escucha de vigilancia, utilice el atributo :defaults.sync="defaults" que viene con auve-form para operar las reglas de verificación de reglas de B. El efecto de este método de escritura es mejor que el de el-form nativo, porque hay será una bandera requerida*

el-form:

Use el reloj para monitorear los cambios en el valor de A. Si A no está vacío, opere las reglas de verificación de B (todo tipo de elixir).
Consejo: si usa el componente de botón de opción de selección, también puede operar las reglas de verificación de B en el evento @change del botón de radio (especial)

El código se muestra a continuación.

En el componente Avue:

//此处用applyType指代a ,taxNumber 指代B
<avue-form  :defaults.sync="defaults" v-model="modifyForm" :option="modifyOption" @submit="modificationSubmission"></avue-form>
...
data(){
    
    
	return{
    
    
		defaults:{
    
    },
		//avue配置项
		modifyOption: {
    
    
        submitText:'修改申报',
        menuPosition:'right',
        size:"mini",
        labelWidth:150,
        emptyBtn:false,
        column: [
          {
    
    
            label: '申报类型',
            prop: 'applyType',
            type: 'radio',
            span:24,
            rules: [{
    
    
              required: true,
              message: "请选择申报类型",
              trigger: "blur"
            }],
            dicData: radioList
          }]
          }
	}
}
...
watch:{
    
    
	'modifyForm.applyType'(val){
    
    
      if(val=== null || val === undefined || val === ''){
    
    
      //此处绑定的rules规则参考默认绑定rules
      this.defaults.taxNumber.rules = [
            {
    
    required: false,
              validator: validateCode1,
              trigger: "blur"}
          ]
     }else{
    
    
     this.defaults.taxNumber.rules = [
            {
    
    required: true,
              validator: validateCode1,
              trigger: "blur"}
          ]
     }
}

En componente nativo en forma el:

<el-form ref="ruleForm" :rules="rules" :model="form" label-width="220px">
	<el-form-item label="申报园区:" prop="applyPark">
		<el-select v-model="form.applyPark" placeholder="请选择" @change="changeApplyPark">
			<el-option
			 v-for="item in applyList"
			:key="item.value"
			:label="item.label"
			:value="item.value">
			</el-option>
		</el-select>
	</el-form-item>
	<el-form-item label="社会统一信用代码:" prop="taxNumber">
    	<el-input v-model="form.taxNumber"></el-input>
    </el-form-item>
</el-form>

...
export default{
    
    
	data(){
    
    
		return{
    
    
			applyList :[{
    
    
	        label:'公司',
	        value:0
	      },{
    
    
	        label:'分公司',
	        value:1
	      }],
	      //rules中要先声明一个不必填,否则下面的this.rules.taxNumber取不到
		    rules: {
    
    
		      applyPark: [
		        {
    
    required: true, message: "请选择申报类型", trigger: "blur"},
		      ],
		      taxNumber: [
		        {
    
    required: false, message: "请输入社会统一信用代码", trigger: "blur"},
		      ],
		    }
		}
	},
	methods:{
    
    
		changeApplyPark(){
    
    
			if(this.form.applyPark === null || this.form.applyPark === undefined || this.form.applyPark === ''){
    
    
			this.rules.taxNumber = [
			{
    
    required: false, message: "请输入社会统一信用代码", trigger: "blur"}
			]
			}else{
    
    
			this.rules.taxNumber = [
				{
    
    required: true, message: "请输入社会统一信用代码", trigger: "blur"}
			]
			}
		}
	}
}

Supongo que te gusta

Origin blog.csdn.net/Salt_NaCl/article/details/129194851
Recomendado
Clasificación