Miễn là bộ chọn của bạn thực sự hoạt động, tôi thấy không có gì sai với mã của bạn để kiểm tra độ dài của mảng. Điều đó sẽ làm những gì bạn muốn. Có rất nhiều cách để làm sạch mã của bạn trở nên đơn giản và dễ đọc hơn. Đây là phiên bản đã được dọn dẹp với ghi chú về những gì tôi đã dọn dẹp.
var album_text = [];
$("input[name='album_text[]']").each(function() {
var value = $(this).val();
if (value) {
album_text.push(value);
}
});
if (album_text.length === 0) {
$('#error_message').html("Error");
}
else {
//send data
}
Một số lưu ý về những gì bạn đang làm và những gì tôi đã thay đổi.
$(this)
luôn là đối tượng jQuery hợp lệ nên không có lý do gì để kiểm tra if ($(this))
. Nó có thể không có bất kỳ đối tượng DOM nào bên trong nó, nhưng bạn có thể kiểm tra xem có $(this).length
nếu cần, nhưng điều đó không cần thiết ở đây vì vòng lặp .each()
sẽ không chạy nếu không có mục nào để $(this)
bên trong vòng lặp .each()
của bạn một cái gì đó.
- Không hiệu quả khi sử dụng $ (this) nhiều lần trong cùng một hàm. Tốt hơn nhiều để có được nó một lần vào một biến địa phương và sau đó sử dụng nó từ biến địa phương đó.
- Bạn nên khởi tạo các mảng với
[]
thay vì new Array()
.
if (value)
khi giá trị được mong đợi là một chuỗi sẽ bảo vệ khỏi value == null
, value == undefined
và value == ""
để bạn không phải làm if (value && (value != ""))
. Bạn chỉ có thể làm: if (value)
để kiểm tra tất cả ba điều kiện trống.
if (album_text.length === 0)
sẽ cho bạn biết nếu mảng có trống miễn là nó là mảng hợp lệ, được khởi tạo (mà nó ở đây).
Bạn đang cố gắng làm gì với công cụ chọn này $("input[name='album_text[]']")
?
Cách tương tự như trong "JavaScript bình thường": http: // stackoverflow.com/questions/2672380/how-do-i-check-if-a-javascript-mảng-giá trị-là-trống-hoặc-null –
@Julien, tôi đã thử tất cả các giải pháp được liệt kê trong chuỗi đó trước khi bắt đầu chuỗi này. Không ai trong số họ làm việc bằng cách nào đó. – input
Chúng tôi có thể lấy thêm một số mã cho ngữ cảnh không? Xung quanh JavaScript, HTML? Bạn có chắc chắn rằng '$ (" input [name = 'album_text []'] ")' thực sự là các phần tử trả về? –