jQuery Validierung eines anderen Werts fehlgeschlagen.

Ich habe ein Formular, das einige Validierungen ausführt. Einer von ihnen prüft, ob eine Datei in ein Feld geladen ist und ob es eine Gruppe von Kontrollkästchen ist, die abgehakt werden müssen.

Mein Problem ist, dass meine Validierungen nur funktionieren, wenn die Validierung ausgelöst wird. Sowohl FF als auch Chrome geben mir keine Fehler.

Hier ist der 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>

Hier ist meine Js Validierung:

$('#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 Antworten

Versuchen Sie die abhängige Option

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
hinzugefügt
Danke, dass mein Problem behoben wurde.
hinzugefügt der Autor T0ny lombardi, Quelle
Wird/sollte dies in I. E. (8 und höher) funktionieren?
hinzugefügt der Autor T0ny lombardi, Quelle
JavaScript - Deutsche Gemeinschaft
JavaScript - Deutsche Gemeinschaft
3 der Teilnehmer

In dieser Gruppe sprechen wir über JavaScript.