代码之家  ›  专栏  ›  技术社区  ›  Sireini

检查是否填写了所有输入以删除禁用的属性

  •  0
  • Sireini  · 技术社区  · 6 年前

    我想检查所有输入是否都有一个值,如果有,则删除按钮上的禁用属性。

    下面我插入了一个代码片段, 但当只有一个输入具有值时,这将删除该属性。

     $(".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>

    有人能帮我检查一下所有输入是否都有一个值,然后删除禁用的属性吗?

    3 回复  |  直到 6 年前
        1
  •  2
  •   charlietfl    6 年前

    逻辑有点落后。您希望过滤每个变量内部的所有输入。您当前的代码只筛选已更改的代码

    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
  •  0
  •   brk    6 年前

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

    关于做 Object.values 它将返回一个包含所有值的数组,并检查是否 这意味着任何一个字段都是空的,在这种情况下,按钮状态可以解除。

    也改变了 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
  •  0
  •   عبدالرحمان    6 年前

    试试这个

    $(".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>