检查数组长度javascript
这是我第一次尝试使用Javascript和jQuery进行数据验证 我的错误数组填充得很好,但我的问题是检查此数组是否为空。在我的情况下总是这样。即使阵列为空,它也会始终向我发出“errors leeg”警报,并通过检查数组长度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
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;