【问题标题】:Check if all inputs are filled in to remove disabled attribute检查是否填写了所有输入以删除禁用属性
【发布时间】:2018-08-07 22:37:57
【问题描述】:

我想检查所有输入是否都有一个值,如果有的话,而不是删除按钮上的 disabled 属性。

下面我插入了一个代码 sn-p, 但是当只有一个输入具有值时,这会删除该属性。

 $(".follow-url-inputs").each(function(index, item) {
      $(item).change(function() {
        var empty = $(this).filter(function() {
          return this.value === "";
        });
        if (empty.length) {
          console.log("all fiels filled in");
        } else {
          $('.fs_btn-save').removeAttr('disabled')
        }
      });
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="follow-inputs text-center px-5">
          <div class="input-group px-5">
            <div class="input-group-prepend">
              <span class="input-group-text" id="basic-addon1">
                <i class="fab fa-facebook"></i>
              </span>
            </div>
            <input id="facebook" class="form-control follow-url-inputs" name="facebook" placeholder="https://facebook.com/followURL" data-com.agilebits.onepassword.user-edited="yes">
          </div><br>
          <div class="input-group px-5">
            <div class="input-group-prepend">
              <span class="input-group-text" id="basic-addon1">
                <i class="fab fa-linkedin"></i>
              </span>
            </div>
            <input id="linkedin" class="form-control follow-url-inputs" name="linkedin" placeholder="https://linkedin.com/followURL" data-com.agilebits.onepassword.user-edited="yes">
          </div><br>
          <div class="input-group px-5">
            <div class="input-group-prepend">
              <span class="input-group-text" id="basic-addon1">
                <i class="fab fa-twitter"></i>
              </span>
            </div>
            <input id="twitter" class="form-control follow-url-inputs" name="twitter" placeholder="https://twitter.com/followURL" data-com.agilebits.onepassword.user-edited="yes">
          </div><br></div>
          
          <div class="text-center">
                                <button class="btn btn-primary fs_btn-primary fs_btn-save" disabled onclick="setupFollowButtons()">Save</button>
                            </div>

有人可以帮我检查所有输入是否都有值,然后删除 disabled 属性。

【问题讨论】:

标签: javascript jquery


【解决方案1】:

逻辑有点倒退。您想过滤每个变化中的所有输入。您当前的代码仅过滤更改的代码

var $inputs = $(".follow-url-inputs").change(function() {

  var inValid = $inputs.filter(function() {
    return !this.value.trim();
  }).length;

  $('.fs_btn-save').prop('disabled', inValid)

  if (!inValid) {
    console.log("all fiels filled in");
  }     
});

【讨论】:

    【解决方案2】:

    使用jquery map 方法。这将给出一个对象,如果任何字段为空,它将有一个键,该键将以 true 作为值。

    在执行Object.values 时,它将返回一个包含所有值的数组,并检查它是否有true,这意味着任何一个字段为空,在这种情况下,可以取消按钮状态

    还将change 更改为keyup

    $(".follow-url-inputs").keyup(function() {
      let m = $(".follow-url-inputs").map(function(item) {
        return $(this).val() === ""
      })
      // map will give an object
      // if any input is empty it will contain true
      if (Object.values(m).indexOf(true) !== -1) {
        console.log("all fiels filled in");
      } else {
        $('.fs_btn-save').removeAttr('disabled')
      }
    })
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="follow-inputs text-center px-5">
      <div class="input-group px-5">
        <div class="input-group-prepend">
          <span class="input-group-text" id="basic-addon1">
                    <i class="fab fa-facebook"></i>
                  </span>
        </div>
        <input id="facebook" class="form-control follow-url-inputs" name="facebook" placeholder="https://facebook.com/followURL" data-com.agilebits.onepassword.user-edited="yes">
      </div><br>
      <div class="input-group px-5">
        <div class="input-group-prepend">
          <span class="input-group-text" id="basic-addon1">
                    <i class="fab fa-linkedin"></i>
                  </span>
        </div>
        <input id="linkedin" class="form-control follow-url-inputs" name="linkedin" placeholder="https://linkedin.com/followURL" data-com.agilebits.onepassword.user-edited="yes">
      </div><br>
      <div class="input-group px-5">
        <div class="input-group-prepend">
          <span class="input-group-text" id="basic-addon1">
                    <i class="fab fa-twitter"></i>
                  </span>
        </div>
        <input id="twitter" class="form-control follow-url-inputs" name="twitter" placeholder="https://twitter.com/followURL" data-com.agilebits.onepassword.user-edited="yes">
      </div><br></div>
    
    <div class="text-center">
      <button class="btn btn-primary fs_btn-primary fs_btn-save" disabled onclick="setupFollowButtons()">Save</button>
    </div>

    【讨论】:

      【解决方案3】:

      试试这个

      $(".follow-url-inputs").each(function(index, item) {
            $(item).change(function() {
              var isEmpty = true;
              $('input').each(function() {
                  if ($.trim($(this).val()) == '') {
                      isEmpty = true;
                  }
                  else {
                      isEmpty = false;
                  }
              });
              if (isEmpty) {
                console.log("isAllEmpty: "+ isEmpty);
              } else {
                $('.fs_btn-save').removeAttr('disabled')
                console.log("isAllEmpty: "+ isEmpty);
              }
            });
          });
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      <div class="follow-inputs text-center px-5">
                <div class="input-group px-5">
                  <div class="input-group-prepend">
                    <span class="input-group-text" id="basic-addon1">
                      <i class="fab fa-facebook"></i>
                    </span>
                  </div>
                  <input id="facebook" class="form-control follow-url-inputs" name="facebook" placeholder="https://facebook.com/followURL" data-com.agilebits.onepassword.user-edited="yes">
                </div><br>
                <div class="input-group px-5">
                  <div class="input-group-prepend">
                    <span class="input-group-text" id="basic-addon1">
                      <i class="fab fa-linkedin"></i>
                    </span>
                  </div>
                  <input id="linkedin" class="form-control follow-url-inputs" name="linkedin" placeholder="https://linkedin.com/followURL" data-com.agilebits.onepassword.user-edited="yes">
                </div><br>
                <div class="input-group px-5">
                  <div class="input-group-prepend">
                    <span class="input-group-text" id="basic-addon1">
                      <i class="fab fa-twitter"></i>
                    </span>
                  </div>
                  <input id="twitter" class="form-control follow-url-inputs" name="twitter" placeholder="https://twitter.com/followURL" data-com.agilebits.onepassword.user-edited="yes">
                </div><br></div>
                
                <div class="text-center">
                                      <button class="btn btn-primary fs_btn-primary fs_btn-save" disabled onclick="setupFollowButtons()">Save</button>
                                  </div>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-06-12
        • 1970-01-01
        • 2021-09-30
        • 1970-01-01
        • 2016-03-20
        • 2018-04-30
        • 1970-01-01
        相关资源
        最近更新 更多