Ich bekomme ein Array von Strings, und wenn das Array Elemente hat, möchte ich eine Sache tun, und wenn nicht, möchte ich das andere tun. Ich bin nicht sicher, wie man überprüft, ob das Array leer ist. Auch wenn ich meinen Code im Chrome-Debugger durchtrete, auch wenn das Array Elemente enthält, ist die Länge immer noch 0, daher kann ich formErrors.length > 0
nicht verwenden.jQuery - Überprüfen, ob Array leer ist oder Attribute hat
Hier ist mein Code für die Fehler. Dies funktioniert gut und gibt ein Array von Fehlerstrings oder ein leeres Array:
var formErrors = validateFormData(formData);
function validateFormData(data) {
var errors = [];
if (data["title"].length == 0) {
errors["title"] = "Project title required";
}
if (data["client"].length == 0) {
errors["client"] = "Client name required";
}
if (data["date"].length == 0) {
errors["date"] = "Date required";
} else if (!isValidDateFormat(data["date"])) {
errors["date"] = "Date format invalid - Format: dd/mm/yyyy";
}
if (data["status"] == "") {
errors["status"] = "Please select current status for this project";
}
if (data["type"] == "") {
errors["type"] = "Please select a project type";
}
if (data["extras"].length == 0) {
errors["extras"] = "You must select at least one extra for this project";
}
return errors;
}
Dann möchte ich eine Sache tun, wenn es keine Fehler gibt und eine andere, wenn es. Aber das ist das bisschen, das für mich nicht funktioniert.
if (formErrors !== {}) {
displayFormErrors(formErrors);
event.preventDefault();
}
else {
clearForm();
}
Ich habe mehrere Möglichkeiten ausprobiert und nichts hat bisher funktioniert. Jede Hilfe wird geschätzt, danke!
EDIT
ich nicht die .length auf dem Array verursachen die Länge ist 0, auch wenn es Daten hat verwenden können. zu tun
ich etwas verwirrt bin, was die Leute traurig fragen, ich bin hier kein Experte ist mein vollständiger Code ein besseres Verständnis dafür zu bekommen, was ich versuche.
$(document).ready(function() {
$('#submit').on("click", onSubmitForm);
function onSubmitForm(event) {
clearErrorMessages();
var formData = getFormData();
var formErrors = validateFormData(formData);
if (formErrors) {
displayFormErrors(formErrors);
event.preventDefault();
}
else {
clearForm();
// Do other stuff
}
}
function clearForm() {
$('#title').val("");
$('#client').val("");
$('#date').val("");
$('#status').val("planning");
$('#description').val("");
$('.type').prop('checked', false);
$('.extra').prop('checked', false);
$('#title').focus();
}
function clearErrorMessages() {
$(".uk-text-danger").html("");
}
function getFormData() {
var data = [];
data["title"] = $('#title').val();
data["client"] = $('#client').val();
data["date"] = $('#date').val();
data["status"] = $('select#status option:selected').val();
data["description"] = $('#description').val();
if ($("input[name='type']:checked").length > 0) {
data["type"] = $("input[name='type']:checked").val();
}
else {
data["type"] = "";
}
data["extras"] = [];
$.each($("input[name='extras[]']:checked"), function(index, radio) {
data["extras"].push(radio.value);
});
return data;
}
function validateFormData(data) {
var errors = [];
if (data["title"].length == 0) {
errors["title"] = "Project title required";
}
if (data["client"].length == 0) {
errors["client"] = "Client name required";
}
if (data["date"].length == 0) {
errors["date"] = "Date required";
} else if (!isValidDateFormat(data["date"])) {
errors["date"] = "Date format invalid - Format: dd/mm/yyyy";
}
if (data["status"] == "") {
errors["status"] = "Please select current status for this project";
}
if (data["type"] == "") {
errors["type"] = "Please select a project type";
}
if (data["extras"].length == 0) {
errors["extras"] = "You must select at least one extra for this project";
}
return errors;
}
function displayFormErrors(errors) {
for (var field in errors) {
var errorElementId = field + "Error";
$('#' + errorElementId).html(errors[field]);
}
} });
Tut mir leid, wenn das zu viel ist, bin ich mir nicht sicher, was ich sonst tun soll.
verwenden nur, wenn (array_name.length == 0) {/ * etwas tun * /} – Cam
Sie wahrscheinlich zeigen sollte, was Ihr Array aussieht. – Cam
Warum benötigen Sie das Exerror-Array? Sie legen ein Array in ein Array und Sie überprüfen das zweite Array? Das macht keinen Sinn..überprüfe nur Fehler [] du brauchst keine formErrors – Konstantinos