我正在进行js验证,想将一个函数传递给另一个函数,但出现错误“未捕获的ReferenceError:未定义项目”。
我的代码:
validation();
function validation() {
var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,10})$/;
function common_inputs() {
var inputs = $(' input').toArray();
inputs.forEach(function(item) {
var element = $(item);
if (!element.val() == "") {
element.closest('.my__item').removeClass('error');
}
if ( !reg.test(element.val())) {
element.closest('.my__item').addClass('error');
}
})
}
function inputValidatorClick() {
common_inputs()
var element = $(item);
if (element.val() == "") {
element.closest('.my__item').addClass('error');
}
}
$('.my-button').click(inputValidatorClick)
$(' input').keyup(common_inputs)
}
},
传递参数“ item”似乎存在问题,但是我是JS的新手,不知道如何解决它。 有人知道如何解决吗?
答案 0 :(得分:0)
我想在一个功能中使用它-common_inputs。不复制 相同的代码部分
我发现在inputValidatorClick
函数内部,您已经做过common_inputs
函数内部的事情。
此外,您可以删除仅用于包装validation
函数的common_inputs
。
var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,10})$/;
function common_inputs() {
$('input').each(function () {
$(this).closest('.my__item').removeClass('error');
});
$('input').filter(function () {
return this.value === '' || !reg.test(this.value);
}).each(function () {
$(this).closest('.my__item').addClass('error');
});
}
$('.my-button').click(common_inputs);
$('input').keyup(common_inputs)
首先,我们收集所有<input>
标签,并从父级(error
)中删除所有my__item
类。
然后,我们过滤具有无效值(空或与正则表达式模式不匹配)的输入。从那里,我们将error
类添加到父母中。