javascript - 如何使用 jQuery 检查选​​择框或文本输入是否为空

标签 javascript jquery

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

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 个元素都有值之前。如果您从左到右完成元素,则该变量不应返回 false直到您在 text input 中输入了一个字符在每个 select 中进行选择后框。

最佳答案

第一个问题:一旦在检查期间将变量设置为 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>

关于javascript - 如何使用 jQuery 检查选​​择框或文本输入是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46778711/

相关文章:

javascript - heroku无法向mlab写入数据

jquery - Jquery 插件实现和资源位置的最佳实践

javascript - 从运行时 block 加载生成的 webpack block

javascript - 如果我加载另一个页面,我的 jQuery 将停止工作

javascript - 带有 jquery simpleModal 框的多个外部链接按钮

javascript - 仅为大写字母和数字添加验证

javascript - 如何从 event.target 获取元素的 ID

javascript - 使用 switch 命令的日期验证不起作用

javascript - 加载自定义 json 文件 - highcharts.js

javascript - 对象中的 jQuery .html() 返回未定义