[英]Check array length javascript
這是我第一次嘗試使用Javascript和jQuery進行數據驗證。
我有錯誤的數組可以正常填充,但是我的問題是檢查此數組是否為空。 以我的情況,這始終是事實。 即使該數組為空,它也將始終警告我“錯誤leeg”,請使用console.log(error)
進行檢查:
<script type="text/javascript">
$(document).ready(function ()
{
var error = [];
$('#contactformulier').submit(function() {
if($('input#namet').val().length == 0) {
error['naam'] = 'Geen geldige naam ingevuld';
} else{
delete error['naam'];
}
if($('input#mailt').val().length == 0){
error['mail'] = 'Geen geldig e-mailadres ingevuld';
} else{
delete error['mail'];
}
if($('textarea#message').val().length == 0){
error['bericht'] = 'Geen geldig bericht ingevuld';
} else{
delete error['bericht'];
}
console.log(error);
if (error.length < 1) {
alert('errors leeg');
}
return false;
});
});
</script>
有什么建議么?
您只能對數組使用數字索引-至少在要使用數組功能(例如Array#length)的情況下。
即
var error = [];
error.push({ naam: "geen geldige naam" });
error.push({ mail: "geen geldige email" });
error.length == 2
那是因為您要向數組中添加屬性,而不是為索引項添加屬性。
您可以使用push()
將項目添加到數組中:
error.push('Geen geldig bericht ingevuld');
在開始驗證之前,請清除數組:
error.length = 0;
// start validation logic
問題是您混合使用了JavaScript類型。 您認為這是一個關聯數組,在JavaScript中是具有屬性和方法的對象 。
因此,您需要使用以下內容進行定義:
var error = {};
如果可以使用arr.length > 0
來檢查簡單數組的空度,則可以使用jQuery方法$.isEmptyObject()
檢查對象“空度”(即缺少屬性/方法$.isEmptyObject()
:
if ( $.isEmptyObject(error) ) { ... }
參考: https : //developer.mozilla.org/zh-CN/docs/JavaScript/Guide/Working_with_Objects
正如其他人所說,您不能將Object
的長度用作關聯數組, .length
屬性用於實數數組。
但是,您可以做的是詢問有多少個鍵:
var n = Object.keys(error).length;
<script type="text/javascript">
$(document).ready(function ()
{
var error;
var inError;
$('#contactformulier').submit(function() {
error = {};
inError = false;
if($('input#namet').val().length == 0) {
error['naam'] = 'Geen geldige naam ingevuld';
inError = true;
}
if($('input#mailt').val().length == 0){
error['mail'] = 'Geen geldig e-mailadres ingevuld';
inError = true;
}
if($('textarea#message').val().length == 0){
error['bericht'] = 'Geen geldig bericht ingevuld';
inError = true;
}
console.log(error);
if (inError) {
alert('errors leeg');
}
return false;
});
});
</script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.