检查数组长度javascript

时间:2013-04-16 14:39:04

标签: javascript jquery validation

这是我第一次尝试使用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>

有什么建议吗?

5 个答案:

答案 0 :(得分:6)

您只能对数组使用数字索引 - 至少如果您想使用数组#long等数组功能。

即。

var error = [];
error.push({ naam: "geen geldige naam" });
error.push({ mail: "geen geldige email" });
error.length == 2

答案 1 :(得分:2)

那是因为您要为数组添加属性而不是索引项。

您可以使用push()将数据项添加到数组中:

error.push('Geen geldig bericht ingevuld');

在开始验证之前,清除阵列:

error.length = 0;
// start validation logic

答案 2 :(得分:0)

问题是你混淆了JavaScript类型。你认为是一个关联数组,在JavaScript中是一个带有属性和方法的对象

所以你需要用:

来定义它
var error = {};

如果可以使用arr.length > 0检查简单的数组空,则可以使用jQuery方法$.isEmptyObject()检查对象“空”(即缺少属性/方法):

if ( $.isEmptyObject(error) ) { ... }

参考: https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Working_with_Objects

答案 3 :(得分:0)

正如其他人所说,你不能将Object的长度用作关联数组,.length属性用于真正的数组。

你可以做什么,问一下有多少把钥匙:

var n = Object.keys(error).length;

答案 4 :(得分:-1)

<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>