Ich versuche derzeit jQuery zu verwenden, um eine Textarea oder eine Datei, die von einem Benutzer hochgeladen wurde, zu überprüfen. Die einzige Zeit, die es niemandem erlauben sollte, auf die nächste Seite zu gehen, ist, wenn sowohl textarea als auch die hochgeladene Datei isValid false ist.jQuery Validierung für Datei und Textbereich
Dies ist der Code, den ich
$(document).ready(function() {
$('#nomination-submit').click(function (e) {
var fileValid = false;
var textValid = true;
$('textarea').each(function() {
if ($.trim($(this).val()) == '') {
textValid = false;
//binds to onchange event of your input field
$('file').bind('change', function() {
var ext = $('#file').val().split('.').pop().toLowerCase();
if ($.inArray(ext, ['pdf', 'doc', 'docx', 'rtf', 'txt']) == -1)
{ $('#fileExtension').slideDown("slow"); $('#fileSize').slideUp("slow"); fileValid = true; } else {
var filesize = (this.files[0].size);
if (filesize > 4194304)
{ $('#fileSize').slideDown("slow"); fileValid = false; } else { fileValid = true; $('#fileSize').slideUp("slow"); }
$('#fileExtension').slideUp("slow"); $('#textOrFile').slideUp("slow");
}
})
}
})
if (fileValid == false && textValid == false) {
e.preventDefault();
{ $('#textOrFile').slideDown("slow"); }
}
}) });
haben, wenn ich es so haben es der Benutzer auf die nächste Seite, wo noch gehen zu lassen, wenn die Eingabe ungültig ist. Aus irgendeinem Grund, wenn ich dies mache oder eine verschachtelte if-Funktion, stellt es nicht sicher, dass beide nicht falsch sind, was der einzige Zeitpunkt ist, zu dem der Benutzer zur nächsten Seite gehen soll.
Nur eine Beobachtung, aber sie binden nicht Ihre Änderungsereignis, bis sie versuchen, einreichen. Das ist vielleicht besser von der Submit-Veranstaltung getrennt? Auch '$ (' input [type = "file"] '). On (' change ', 'not' $ (' file ')' könnte effektiver sein. –
@MarkSchultheiss Ursprünglich waren dies zwei getrennte Teile des Validierungscodes. Ich musste die beiden Teile Code zusammenführen und das war die Art und Weise, wie es in meinem Kopf Sinn machte.Andernfalls hätte ich es vor dem Absenden-Button, aber das schien nicht der richtige Ort, um es zu platzieren. – race155