javascript – 如果使用jQuery不为空,如何切换输入类?

前端之家收集整理的这篇文章主要介绍了javascript – 如果使用jQuery不为空,如何切换输入类?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用Bootstrap 4.

我有四个文本输入,如果任何文本输入包含任何值,我想添加一个类到一个按钮.

单击按钮时,我想清除输入值,并从按钮中删除该类.

我有一半工作(点击按钮成功清除所有输入).

我的代码如下;

  1. $(document).ready(function() {
  2. $("#filterRecords input").on("keyup change",function() {
  3. $("#filterRecords input").each(function() {
  4. var element = $(this);
  5. if (element.val().length > 0) {
  6. $('#resetFilter').addClass('btn-outline-primary');
  7. }
  8. });
  9. });
  10. $('#resetFilter').click(function() {
  11. $('input[type=text]').val('').change();
  12. });
  13. });
  1. <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  2. <div class="row filterRecords">
  3. <div class="input-group col-xs-6 col-sm-6 col-md-3 mb-3">
  4. <input type="text" id="searchName" class="form-control" placeholder="Search Name">
  5. </div>
  6. <div class="input-group col-sm-6 col-md-3 mb-3">
  7. <input type="text" id="searchLang" class="form-control" placeholder="Search Language">
  8. </div>
  9. <div class="input-group col-sm-6 col-md-3 mb-3">
  10. <input type="text" id="yearMin" class="form-control start" placeholder="Search Start Year">
  11. </div>
  12. <div class="input-group col-sm-6 col-md-3 mb-3">
  13. <input type="text" id="yearMax" class="form-control end" placeholder="Search End Year">
  14. </div>
  15. </div>
  16. <div class="row justify-content-md-center">
  17. <div class="col-md-auto">
  18. <button class="btn btn-sm btn-default" type="button" id="resetFilter">Reset Filters</button>
  19. <hr>
  20. </div>
  21. </div>

Fiddle link.

任何帮助,将不胜感激.

解决方法

首先,filterRecords是一个类,而不是id,所以你的选择器是不正确的.

除此之外,你的逻辑问题是它只在输入值改变时才添加类.当没有输入值输入时,您还需要有一些逻辑来删除它.

您可以通过使用toggleClass()以及基于填充输入数量的布尔值来实现,如下所示:

  1. $(document).ready(function() {
  2. var $inputs = $(".filterRecords input");
  3. $inputs.on("input",function() {
  4. var $filled = $inputs.filter(function() { return this.value.trim().length > 0; });
  5. $('#resetFilter').toggleClass('btn-outline-primary',$filled.length > 0);
  6. });
  7. $('#resetFilter').click(function() {
  8. $inputs.val('').trigger('input');
  9. });
  10. });
  1. .btn-outline-primary {
  2. color: #C00;
  3. }
  1. <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  2. <div class="row filterRecords">
  3. <div class="input-group col-xs-6 col-sm-6 col-md-3 mb-3">
  4. <input type="text" id="searchName" class="form-control" placeholder="Search Name">
  5. </div>
  6. <div class="input-group col-sm-6 col-md-3 mb-3">
  7. <input type="text" id="searchLang" class="form-control" placeholder="Search Language">
  8. </div>
  9. <div class="input-group col-sm-6 col-md-3 mb-3">
  10. <input type="text" id="yearMin" class="form-control start" placeholder="Search Start Year">
  11. </div>
  12. <div class="input-group col-sm-6 col-md-3 mb-3">
  13. <input type="text" id="yearMax" class="form-control end" placeholder="Search End Year">
  14. </div>
  15. </div>
  16. <div class="row justify-content-md-center">
  17. <div class="col-md-auto">
  18. <button class="btn btn-sm btn-default" type="button" id="resetFilter">Reset Filters</button>
  19. <hr>
  20. </div>
  21. </div>

还要注意使用输入而不是keyup更改的组合.

猜你在找的jQuery相关文章