【问题标题】:Button is not enabled when all fields filled填写所有字段时未启用按钮
【发布时间】:2019-01-16 09:41:57
【问题描述】:

我希望在填写所有字段后添加更多按钮启用但它不起作用

我尝试过这种方式,所有输入类型的文本、文本区域都被填充并选择了选择选项,然后添加更多按钮启用

$("textarea, input[type='text']").on("keyup", function() {
  if ($(this).val() != "" && $("textarea").val() != "" && $("select[name='year']").is(":selected") == true) {
    $("input[name='add']").removeAttr("disabled");
  } else {
    $("input[name='add']").attr("disabled", "disabled");
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="col s12 m12 "><label for="title">Certificate Title</label>
  <textarea class="materialize-textarea" style="padding: 0px;" id="title" name="title[]">Higher School Secondary Certificate</textarea>
</div>
<div class="col s12 m12 "><label for="title">School / College, City</label>

  <textarea id="location" name="location[]" class="materialize-textarea" style="padding: 0px;"></textarea>
</div>
<div class="col s3 m3 "><label for="title">Marks</label>
  <input id="marks" name="marks[]" type="text" value="" />
</div>
<div class="col s3 m3 "><label for="title">Division</label>
  <input id="divsion" name="divsion[]" type="text" value="" placeholder="1st" />
</div>
<div class="col s3 m3 "><label for="title">Year</label>
  <select name="year[]">
    <option value="2000">2000</option>
    <option value="2001">2001</option>
    <option value="2002">2002</option>
    <option value="2003">2003</option>
    <option value="2004">2004</option>
    <option value="2005">2005</option>
    <option value="2006">2006</option>
    <option value="2007">2007</option>
    <option value="2008">2008</option>
    <option value="2009">2009</option>
    <option value="2010">2010</option>
    <option value="2011">2011</option>
    <option value="2012">2012</option>
    <option value="2013">2013</option>
    <option value="2014">2014</option>
    <option value="2015">2015</option>
    <option value="2016">2016</option>
    <option value="2017">2017</option>
    <option value="2018">2018</option>
    <option value="2019">2019</option>

  </select>
</div>

<div class="col s3 m3"><button type="button" name="add" id="add" class="btn btn-success pull-right" disabled="disabled">Add More</button></div>

【问题讨论】:

  • 我为你做了一个 sn-p 并为你添加了 jQuery 库。请检查一下。
  • 它没有在 sn-p 中启用添加更多按钮
  • 我知道不是。我没有在您的 sn-p 中解决您的问题。我们在答案中这样做。

标签: jquery


【解决方案1】:

看看这个

我现在在字段中添加了必填项

如果你不想这样做,那么输入长度需要匹配你想要的字段

$(":input[required]").on("input", function() {
  var vals = [],
    len = $(":input[required]").length; // if no button in container
  $(":input[required]").each(function() {
    var val = $(this).val();
    if (val) vals.push(this.id + ":" + val)
  });
  if (vals.length == len) $("#add").removeAttr("disabled");
  else $("#add").attr("disabled", "disabled");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


<div class="col s12 m12 "><label for="title">Certificate Title</label>
  <textarea required class="materialize-textarea" style="padding: 0px;" id="title" name="title[]">Higher School Secondary Certificate</textarea>
</div>
<div class="col s12 m12 "><label for="title">School / College, City</label>

  <textarea required id="location" name="location[]" class="materialize-textarea" style="padding: 0px;"></textarea>
</div>
<div class="col s3 m3 "><label for="title">Marks</label>
  <input required id="marks" name="marks[]" type="text" value="" />
</div>
<div class="col s3 m3 "><label for="title">Division</label>
  <input required id="divsion" name="divsion[]" type="text" value="" placeholder="1st" />
</div>
<div class="col s3 m3 "><label for="title">Year</label>
  <select required name="year[]">
    <option value="">Please select year</option>
    <option value="2000">2000</option>
    <option value="2001">2001</option>
    <option value="2002">2002</option>
    <option value="2003">2003</option>
    <option value="2004">2004</option>
    <option value="2005">2005</option>
    <option value="2006">2006</option>
    <option value="2007">2007</option>
    <option value="2008">2008</option>
    <option value="2009">2009</option>
    <option value="2010">2010</option>
    <option value="2011">2011</option>
    <option value="2012">2012</option>
    <option value="2013">2013</option>
    <option value="2014">2014</option>
    <option value="2015">2015</option>
    <option value="2016">2016</option>
    <option value="2017">2017</option>
    <option value="2018">2018</option>
    <option value="2019">2019</option>

  </select>
</div>

<div class="col s3 m3"><button type="button" name="add" id="add" class="btn btn-success pull-right" disabled="disabled">Add More</button></div>

【讨论】:

  • 仍然添加更多按钮未启用
  • 它可以工作,但我在我的页面中应用了此代码仍未启用添加更多按钮
  • 那么您的代码与您粘贴的不同。例如页面上的更多输入字段
  • 请查看更新。我在字段中添加了必填项并仅测试必填字段
  • jQuery 加载了吗?包裹在 $(function() {...}) 中的事件处理程序?控制台错误?
【解决方案2】:

您可以.filter() 并计算有多少元素没有设置value。
比按钮的disabled 属性使用布尔值这样的结果。

PS:我将下面的内容包装在 &lt;form&gt; 中,但当然,您可以使用所需的任何父选择器。

const $inp = $('#myForm :input:not(#add)'),
      $btn = $('#add');

$inp.on('input', () => $btn.prop('disabled', $inp.filter((i, el) => !el.value).length > 0));
label, label *{display: block;}
<form id="myForm">
  <label>Certificate Title<textarea name="title[]" placeholder="Higher School Secondary Certificate"></textarea></label>
  <label>School / College, City<textarea name="location[]"></textarea></label>
  <label>Marks<input name="marks[]" type="text"></label>
  <label>Division<input name="divsion[]" type="text" placeholder="1st"></label>
  <label>Year<select name="year[]"><option value='' selected disabled>--Select--</option><option value="2018">2018</option><option value="2019">2019</option></select></label>
  <button type="button" id="add" disabled>Add More</button>
</form>

<script src="//code.jquery.com/jquery-3.3.1.min.js"></script>

【讨论】:

  • 它可以工作,但我在我的页面中应用了此代码仍未启用添加更多按钮
  • @Hayamkhan 很遗憾听到。您只是复制粘贴了我的 JS 示例并期望它能够工作?你有没有注意到我有一个带有 ID 的父包装器?您是否相应地调整了 HTML?
  • 可爱的短脚本。我总是不相信道具真/假
【解决方案3】:

它适用于每个领域

$("textarea, input[type='text'],select[name='year[]']").on("keyup change", function() {
  // console.log($(this).val());
  console.log($("select[name='year']").val());

  if ($("textarea").val() != "" && $("select[name='year']").val() != 'undefined') {
     $("#add").removeAttr("disabled");
  } else {
    $("#add").attr("disabled", "disabled");
  }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 2016-04-19
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多