2016-04-27 6 views
1

私が助けてくれるかどうかは、別の入力で値によって生成された動的入力を持つフォームを検証しようとしているかと思います。vue-validatorを使用して動的検証を追加できません

これは私のフォームです:

<validator name="validationQ"> 
    <form class="form-horizontal"> 
     <h3>Crear pregunta</h3> 
     <div class="form-group"> 
     <label class="col-lg-2 control-label">Pregunta</label> 
     <div class="col-lg-10"> 
      <input type="text" v-model="questionFormData.name" v-validate:name="{ required: true}" 
       placeholder="Nombre" class="form-control" id="name"> 
      <span v-if="$validationQ.name.required" class="help-block m-b-none"> 
      <span class="label label-danger">Pregunta obligatoria</span> 
      </span> 
     </div> 
     </div> 
     <div class="form-group"> 
     <label class="col-lg-2 control-label">Tipo de pregunta</label> 
     <div class="col-lg-10"> 
      <select class="form-control" 
       v-model="questionFormData.questionType_id" 
       id="questiontype" v-validate:questiontype="{ required: true}"> 
       <option selected value>-Selecciona el tipo de respuesta-</option> 
       <option v-for="question_type in question_types" 
        value="{{question_type.id}}">{{question_type.name}}</option> 
      </select> 
      <span v-if="$validationQ.questiontype.required" class="help-block m-b-none"> 
      <span class="label label-danger">Tipo de pregunta obligario</span> 
      </span> 
     </div> 
     </div> 
     <div class="form-group" v-if="questionFormData.questionType_id == 4"> 
     <!--<validator name="range">--> 
     <label class="col-lg-2 control-label">Valor mínimo</label> 
     <div class="col-lg-4"> 
      <input type="number" class="form-control" id="minvalue" 
       placeholder="Valor mínimo" min="0" 
       v-model="questionFormData.min_value" 
       v-validate:minvalue="{ required: true }">  
      <span v-if="$validationQ.minvalue.required" 
       class="help-block m-b-none"> 
      <span class="label label-danger">Campo oblicagorio</span>  
      </span> 
     </div> 
     <label class="col-lg-2 control-label">Valor máximo</label> 
     <div class="col-lg-4"> 
      <input type="number" class="form-control" id="maxvalue" 
       placeholder="Valor máximo" min="5" 
       v-model="questionFormData.max_value" 
       v-validate:maxvalue="{ required:true }"> 
      <span v-if="$validationQ.maxvalue.required" class="help-block m-b-none"> 
      <span class="label label-danger">Campo oblicagorio</span>  
      </span>  
     </div> 
     <!--</validator>--> 
     </div> 
     <div class="form-group" v-if="questionFormData.questionType_id == 1" > 
     <label class="col-lg-2 control-label">Tipo de respuesta</label> 
     <div class="col-lg-10"> 
      <select class="form-control" v-model="questionFormData.open_type" 
       id="opentype" v-validate:opentype="{ required: true}"> 
       <option selected value>-Selecciona el tipo de respuesta-</option> 
       <option value="text">Texto</option> 
       <option value="email">Email</option> 
       <option value="numeric">Numérico</option> 
      </select> 
      <span v-if="$validationQ.opentype.required" class="help-block m-b-none"> 
      <span class="label label-danger">Tipo de respuesta obligario</span> 
      </span> 
     </div> 
     </div> 
     <div class="form-group" 
     v-if="questionFormData.questionType_id == 5 || questionFormData.questionType_id == 6" > 
     <label class="col-lg-2 control-label">Tipo de respuesta</label> 
     <div class="col-lg-10"> 
      <select class="form-control" disabled v-model="questionFormData.open_type" 
       id="opentype" v-validate:opentype="{ required: true}"> 
       <option value>-Selecciona el tipo de respuesta-</option> 
       <option selected value="text">Texto</option> 
       <option value="numeric">Numérico</option> 
      </select> 
      <span v-if="$validationQ.opentype.required" class="help-block m-b-none"> 
      <span class="label label-danger">Tipo de respuesta obligario</span> 
      </span> 
     </div> 
     </div> 
     <div class="form-group"> 
     <div class="col-lg-offset-2 col-lg-10"> 
      <div class="i-checks"> 
       <label> <input v-model="questionFormData.is_required" 
        type="checkbox" class="checkbox-primary"> Pregunta obligatoria </label> 
      </div> 
     </div> 
     </div> 
     <div class="form-group"> 
     <div class="col-lg-offset-2 col-lg-10"> 
      <button class="btn btn-sm btn-success btn-block" v-on:click="addQuestion(current_section_id)" 
       data-dismiss="modal" type="button" 
       v-if="$validationQ.valid ">Agregar pregunta</button> 
     </div> 
     </div> 
     <div class="form-group"> 
     <div class="col-lg-offset-2 col-lg-10"> 
      <button class="btn btn-sm btn-white btn-block" data-dismiss="modal"> Cancelar </button> 
     </div> 
     </div> 
    </form> 
</validator> 

これは、バリデータオブジェクトです:

{ 
    "valid": false, 
    "invalid": true, 
    "touched": false, 
    "untouched": true, 
    "modified": false, 
    "dirty": false, 
    "pristine": true, 
    "questiontype": { 
    "required": true, 
    "modified": false, 
    "pristine": true, 
    "dirty": false, 
    "untouched": true, 
    "touched": false, 
    "invalid": true, 
    "valid": false 
    }, 
    "name": { 
    "required": true, 
    "modified": false, 
    "pristine": true, 
    "dirty": false, 
    "untouched": true, 
    "touched": false, 
    "invalid": true, 
    "valid": false 
    } 
} 

出力から、私は、動的に生成入力が検証オブジェクトに動的に追加されていないことを理解しています。だから私は誰かが私の問題を解決するためのヒントを与えることができるのだろうかと思う。

VUEとVUE-バリデータの現在のバージョン:

<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.16/vue.min.js"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue-validator/2.0.2/vue-validator.min.js"></script> 

答えて

0

代わりにあなたがv-showを使用することができv-ifを使用します。これは依然として不必要な質問を隠すことになりますが、それらが確実に回収されるのはvue-validatorです。

さらにvue > 1.0.19を使用してvue-validator >= 2.0.0を使用する必要があります。新しいvue-validatorの道を開いた1.0.19に変更がありました。

関連する問題