簡體   English   中英

檢查數組長度的JavaScript

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM