我得到一個字符串數組,如果數組有項目,我想做一件事,如果沒有,我想做另一件事。我不知道如何檢查數組是否爲空。另外,當在chrome調試器中逐句通過我的代碼時,即使數組中有項目,長度仍然爲0,因此我不能使用formErrors.length > 0
。jQuery - 檢查數組是否爲空或具有屬性
這裏是我的代碼來獲取錯誤。這工作得很好,並返回錯誤字符串數組或一個空數組:如果有
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;
}
然後,我想做的一兩件事,如果沒有錯誤,另一個。但這是不適合我的一點。
if (formErrors !== {}) {
displayFormErrors(formErrors);
event.preventDefault();
}
else {
clearForm();
}
我已經嘗試了多種方式,目前爲止沒有任何工作。任何幫助表示讚賞,謝謝!
EDIT
我不能使用陣列上的。長度引起的長度爲0,即使它有數據。
我稍微感到困惑的是什麼人都在問對不起,我不是專家,這裏是我的全部代碼,以獲得更好的理解我想要做的事。
$(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]);
}
} });
對不起,如果這是太多,我不知道還有什麼要做。
只是使用IF(array_name.length == 0){/ *做某事* /} – Cam
你或許應該表現出你的陣列是什麼樣子。 – Cam
你爲什麼需要前陣列陣列?你在數組中插入一個數組並檢查第二個數組?那沒有意義..只是檢查錯誤[]你不需要formErrors – Konstantinos