Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查数组长度javascript_Javascript_Jquery_Validation - Fatal编程技术网

检查数组长度javascript

检查数组长度javascript,javascript,jquery,validation,Javascript,Jquery,Validation,这是我第一次尝试使用Javascript和jQuery进行数据验证 我的错误数组填充得很好,但我的问题是检查此数组是否为空。在我的情况下总是这样。即使阵列为空,它也会始终向我发出“errors leeg”警报,并通过console.log(error)进行检查: $(文档).ready(函数() { var错误=[]; $('#contactformulier')。提交(函数(){ if($('input#namet').val().length==0){ 错误['naam']='Geen g

这是我第一次尝试使用Javascript和jQuery进行数据验证

我的错误数组填充得很好,但我的问题是检查此数组是否为空。在我的情况下总是这样。即使阵列为空,它也会始终向我发出“errors leeg”警报,并通过
console.log(error)
进行检查:


$(文档).ready(函数()
{
var错误=[];
$('#contactformulier')。提交(函数(){
if($('input#namet').val().length==0){
错误['naam']='Geen geldige naam ingevuld';
}否则{
删除错误['naam'];
}
if($('input#mailt').val().length==0){
错误['mail']=“Geen geldig电子邮件地址ingevuld';
}否则{
删除错误['mail'];
}
if($('textarea#message').val().length==0){
错误['bericht']='Geen geldig bericht ingevuld';
}否则{
删除错误['bericht'];
}
console.log(错误);
如果(错误长度<1){
警报(‘错误’);
}
返回false;
});
});

有什么建议吗?

这是因为您正在向数组中添加属性,而不是索引项

您可以使用以下命令将项添加到数组:

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

error.length = 0;
// start validation logic

这是因为您正在向数组中添加属性,而不是索引项

您可以使用以下命令将项添加到数组:

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

error.length = 0;
// start validation logic

您只能对数组使用数字索引-至少如果您想使用数组功能,如array#length

i、 e


您只能对数组使用数字索引-至少如果您想使用数组功能,如array#length

i、 e


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

因此,您需要使用以下内容来定义它:

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


REF:

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

因此,您需要使用以下内容来定义它:

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

参考:


$(文档).ready(函数()
{
var误差;
var误差;
$('#contactformulier')。提交(函数(){
错误={};
错误=错误;
if($('input#namet').val().length==0){
错误['naam']='Geen geldige naam ingevuld';
错误=正确;
}
if($('input#mailt').val().length==0){
错误['mail']=“Geen geldig电子邮件地址ingevuld';
错误=正确;
}
if($('textarea#message').val().length==0){
错误['bericht']='Geen geldig bericht ingevuld';
错误=正确;
}
console.log(错误);
如果(错误){
警报(‘错误’);
}
返回false;
});
});

$(文档).ready(函数()
{
var误差;
var误差;
$('#contactformulier')。提交(函数(){
错误={};
错误=错误;
if($('input#namet').val().length==0){
错误['naam']='Geen geldige naam ingevuld';
错误=正确;
}
if($('input#mailt').val().length==0){
错误['mail']=“Geen geldig电子邮件地址ingevuld';
错误=正确;
}
if($('textarea#message').val().length==0){
错误['bericht']='Geen geldig bericht ingevuld';
错误=正确;
}
console.log(错误);
如果(错误){
警报(‘错误’);
}
返回false;
});
});

正如其他人所说,不能将
对象的长度
用作关联数组,
.length
属性用于实际数组

但你可以做的是询问有多少把钥匙:

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

正如其他人所说,不能将
对象的长度作为关联数组使用,
.length
属性用于实际数组

但你可以做的是询问有多少把钥匙:

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

您从未向数组中添加任何内容<代码>错误['naam']
在数组对象上分配一个属性,它不会在数组中放置任何元素。哈哈,在这种情况下我确实失败了。。。哇@Chad和什么是
error[0]=“foo”做什么?它使用键“1”和值“foo”将属性添加到数组中。数组是对象。只有当使用数字作为键时,它才会影响
length
属性。@Ian correct,我不清楚我是怎么说的吗?说“它不会在数组中放置任何元素”对我来说很奇怪。它只是意味着它不会影响
length
属性,因此不能使用常规的
for
循环。但是元素仍然“在”数组中,您只需要以不同的方式访问它。我认为很明显,OPS中有很多东西混在一起,你从来没有向数组中添加任何东西<代码>错误['naam']
在数组对象上分配一个属性,它不会在数组中放置任何元素。哈哈,在这种情况下我确实失败了。。。哇@Chad和什么是
error[0]=“foo”做什么?它使用键“1”和值“foo”将属性添加到数组中。数组是对象。只有当使用数字作为键时,它才会影响
length
属性。@Ian correct,我不清楚我是怎么说的吗?说“它不会在数组中放置任何元素”对我来说很奇怪。它只是意味着它不会影响
length
属性,因此不能使用常规的
for
循环。但是元素仍然“在”数组中,y
<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>
var n = Object.keys(error).length;