Javascript 如何在jQuery中返回空字段的名称值

Javascript 如何在jQuery中返回空字段的名称值,javascript,jquery,Javascript,Jquery,我有一段代码验证html表单并突出显示带有红色边框的空字段 我想要的是能够返回空输入字段的名称值,以便输出它们 var isValid = $('input, textarea').not('input:disabled').filter(function() { return !this.value; }).css('border-color', 'red').length == 0; if(isValid){ console.log('Ok'); }else if(!i

我有一段代码验证html表单并突出显示带有红色边框的空字段

我想要的是能够返回空输入字段的名称值,以便输出它们

var isValid = $('input, textarea').not('input:disabled').filter(function() {

    return !this.value;

}).css('border-color', 'red').length == 0;

if(isValid){
    console.log('Ok');
}else if(!isValid){
    console.log($(this).attr('name') + 'must not be empty');
}

当没有空字段时,第一部分工作正常,但当有空字段时,我希望在控制台中获得这些输入的名称值。但是我一直得到未定义的

原因是
是有效的
是布尔值(
.length==0
)。您需要获得如下所示的过滤元素:

var isValidEl = $('input, textarea').not('input:disabled').filter(function() {

    return this.value.length == 0;

}).css('border-color', 'red');
然后,将条件更改为:

if(!isValidEl.length){
    console.log('Ok');
} else {
    isValidEl.each(function() {
        console.log($(this).attr('name') + ' must not be empty');
    });
}
Exmaple:

var isValidEl=$('input,textarea')。不('input:disabled')。过滤器(函数(){
返回this.value.length==0;
}).css(“边框颜色”、“红色”);
如果(!isValidEl.length){
console.log('Ok');
}否则{
isValidEl.each(函数(){
console.log($(this.attr('name')+'不能为空);
});
}

你好
可以使用
map()


我得到的是isValidEl。每个都不是一个函数。如果我可能会问,isValid是一个boolen,那么为什么要访问它的length属性?因为true和false总是有一个长度值,在最后两种情况下都是true。是的,我没有使用您的变量名,只是使用其中的逻辑。您认为
返回吗!这就是价值可以吗?不应该是
返回!这个.value.length@AlonEitan可以正常工作,因为空字符串是falsy@AlonEitan但这两种方法都会失败,并以空格作为值…最好是
返回!this.value.trim()
是的,但是由于空格将通过
所需的验证,因此我将把它留给OP来决定它应该是谁handled@charlietfl它起作用了!但我知道其中两个名字是空字符串。这意味着什么?
var isValid = $('input, textarea').not('input:disabled').filter(function() {    
    return !this.value;    
}).css('border-color', 'red')

var names = isvalid.map(function(){
    return this.name;
}).get()