jQuery Validación de otro valor que falla.

Tengo un formulario que ejecuta algunas validaciones. Uno de ellos comprueba si un archivo está cargado en un campo y si es un grupo de casillas de verificación debe marcarse.

mi problema es que mis validaciones solo funcionan si se activa la validación. tanto FF como Chrome no me dan ningún error.

aquí está el HTML:

<form id="supplier_registration_form" method="POST">

    

<input name="referenceEmail3" id="referenceEmail3" value="" type="text" /> <input type="file" name="file_upload1" id="file_upload1" class="fpp_textfield" value="" />
<input type="checkbox" name="agency[]" id="one" value="one"> <input type="checkbox" name="agency[]" id="two" value="two"> <input type="checkbox" name="agency[]" id="three" value="three">
<input type="submit" name="submit" id="submit" value="Submit"> </form>

aquí está mi validación Js:

$('#supplier_registration_form').validate({

    onkeyup: false,
    ignore: ":hidden",

    rules: {
        file_upload1: { required: false, accept: "|txt|doc|pdf|docx|xls|xlsx|ppt|pptx"},

        'agency[]': {  required : function() { 
                         var file = document.getElementById("file_upload1").files[0];
                        if (file.size > 0) {
                          return true;
                        } else { 
                          return false; 
                        }
                      }   
                    }    
},
messages: {
  yearEstablished:     'Please enter a year between 1850 and 2013',
  file_upload1:        'Only txt, doc, xcl, xls, ppt and pdf file extensions are allowed!',
  file_upload2:        'Only txt, doc, xcl, xls, ppt and pdf file extensions are allowed!',
  "agency[]":          'One or more certifying agency is required'
},  
onfocusout: function (element) {
  if (!this.checkable(element) && (element.name in this.submitted || !this.optional(element))) {
    var currentObj = this;
    var currentElement = element;
    var delay = function() { 
      currentObj.element(currentElement); 
    };
    setTimeout(delay, 0);
  }
}, 
errorPlacement: function(error, element) {
  if (element.attr("name") == "agency[]" ) 
    error.insertAfter(".certifying-agency-error");
  else 
    error.insertAfter(element);
}

});
0

1 Respuestas

Pruebe la opción depende

jQuery(function ($) {
    $('#supplier_registration_form').validate({

        onkeyup: false,
        ignore: ":hidden",

        rules: {
            file_upload1: {
                required: false,
                accept: "txt|doc|pdf|docx|xls|xlsx|ppt|pptx|html"
            },
            'agency[]': {
                required: {
                    depends: function() {
                        var file = document.getElementById("file_upload1").files;
                        return file.length > 0
                    }
                }
            }
        },
        messages: {
            yearEstablished: 'Please enter a year between 1850 and 2013',
            file_upload1: 'Only txt, doc, xcl, xls, ppt and pdf file extensions are allowed!',
            file_upload2: 'Only txt, doc, xcl, xls, ppt and pdf file extensions are allowed!',
            "agency[]": 'One or more certifying agency is required'
        },
        onfocusout: function (element) {
            if (!this.checkable(element) && (element.name in this.submitted || !this.optional(element))) {
                var currentObj = this;
                var currentElement = element;
                var delay = function() {
                    currentObj.element(currentElement);
                };
                setTimeout(delay, 0);
            }
        },
        errorPlacement: function (error, element) {
            if (element.attr("name") == "agency[]") {
                error.insertAfter(".certifying-agency-error");
            } else {
                error.insertAfter(element);
            }
        }

    });
})

Demo: Fiddle

0
agregado
Gracias que corrigió mi problema.
agregado el autor T0ny lombardi, fuente
¿Debería/debería funcionar esto en I.E. (8 y más)?
agregado el autor T0ny lombardi, fuente
JavaScript - Comunidad española
JavaScript - Comunidad española
4 de los participantes

En este grupo hablamos de JavaScript. Partner: es.switch-case.com