2017-10-16 65 views
0

我有2个选择框和文本输入的表单。在更改这3个元素中的任何一个时,我想运行检查以查看是否有任何元素为空(无值),然后更改变量。这是我迄今为止尝试:如何检查是否选择任一框或文本输入是空的jQuery

var emptyFields = true; 
 

 
var inputs = $('input[type="text"], select').on('keyup change', function() { 
 

 
    inputs.each(function() { 
 
    var elm = $(this), 
 
    val = elm.val(); 
 

 
    if ((val != '0' && elm.is('select')) || (val != '' && elm.is('input'))) { 
 
     emptyFields = false; 
 
     return false; 
 
    } 
 
    }); 
 

 
    $('.info span').text(emptyFields); 
 
});
.info { 
 
margin-top:20px; 
 
} 
 
span { 
 
font-weight:bold; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select> 
 
<option selected disabled>SELECT AN OPTION</option> 
 
<option>One</option> 
 
<option>Two</option> 
 
<option>Three</option> 
 
</select> 
 

 
<select> 
 
<option selected disabled>SELECT AN OPTION</option> 
 
<option>Four</option> 
 
<option>Five</option> 
 
<option>Six</option> 
 
</select> 
 

 
<input type="text" /> 
 

 
<div class="info">Empty fields? <span></span></div>

我现在遇到的问题是,该变量转变为false甚至在所有3个元素有一个值。如果你正在完成的元素从左至右,直到你在每个select箱中进行选择后输入的字符到text input变量不应返回false

回答

1

第一个问题:一旦您在检查期间将变量设置为false,您在将来的检查中绝不会将其更改回true。你应该使用一个本地变量,每次调用该函数时都要初始化该变量。

问题二:你有你的支票倒退。既然你想显示true如果字段的任何都是空的,你需要将变量初始化为false,然后将其设置为true当你找到一个空场。

var inputs = $('input[type="text"], select').on('keyup change', function() { 
 
    var emptyFields = false; 
 
    inputs.each(function() { 
 
    var elm = $(this), 
 
    val = elm.val(); 
 

 
    if ((val == '0' && elm.is('select')) || (val == '' && elm.is('input'))) { 
 
     emptyFields = true; 
 
     return false; 
 
    } 
 
    }); 
 

 
    $('.info span').text(emptyFields); 
 
});
.info { 
 
margin-top:20px; 
 
} 
 
span { 
 
font-weight:bold; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select> 
 
<option selected disabled>SELECT AN OPTION</option> 
 
<option>One</option> 
 
<option>Two</option> 
 
<option>Three</option> 
 
</select> 
 

 
<select> 
 
<option selected disabled>SELECT AN OPTION</option> 
 
<option>Four</option> 
 
<option>Five</option> 
 
<option>Six</option> 
 
</select> 
 

 
<input type="text" /> 
 

 
<div class="info">Empty fields? <span></span></div>

+0

太好了,谢谢您了详细的解释! – user13286

相关问题