我有一个表单,其中所有输入字段都是类item
。当我单击“提交”时,如果填写了所有值,则使用以下函数进行检查。
$.each($(".items"),function(i,e){
// loop through all the items
if(e.value == "" || !$("input[name='"+e.name+"']:radio:checked").length)
if(error.indexOf(e.title) === -1)
error += e.title + "<br/>";
});
此表单包含文本区域,单选框和普通文本输入字段。它返回所有未填写的单选框以及未填写的所有文本输入。但是它也返回所有文本区域,无论它是否填写。
我首先想到的是因为我指定它来检查值,但似乎值检查确实检查了文本区域,所以它不可能是那样。
有人可以协助我让它只返回空元素吗?
答案 0 :(得分:3)
$.each( $( '.items' ), function() {
if ( ( this.type === 'checkbox' || this.type === 'radio' ) && !this.checked ) {
// Go
}
else if ( this.value === '' ) {
// Do your stuff
}
});
不幸的是,似乎没有其他选择,只能将案件分开。
答案 1 :(得分:2)
$.each($('.items'),function(i,elem){
if( ($(elem).attr('type') == 'radio' || $(elem).attr('type') == 'checkbox') && !$(elem).is(':checked') ) {
// RADIOS AND CHECKBOXES EMPTY
} else if( $(elem).val().length == 0 ) {
// INPUTS TYPE TEXT AND TEXTAREA EMPTY
}
});
答案 2 :(得分:0)
所以我使用了JBRTRND和Florian Margaine的答案,因为他们都不想100%正确地工作。
我只是把这个放在这里,因为有人被困在同一个问题上。对于我从他们那里获得的任何帮助,我都不会得到赞誉,我真的很感激。
这就是我修复它的方法:
$.each($(".items"),function(){
// loop through all the items
// and alert the value
if ( this.type == 'radio' && !$("input[name='"+this.name+"']:radio:checked").length) {
if(error.indexOf(this.title) === -1)
error += this.title + "<br/>";
}
else if ( this.value === '' ) {
if(error.indexOf(this.title) === -1)
error += this.title + "<br/>";
}
});