javascript - 在输入到一组其他字段时禁用表单字段

标签 javascript jquery

我有下面的表格,想用 jQuery 来做以下事情:

1/如果在任何一个或多个字段 'filter_loan_id'、'filter_fname'、'filter_lname'、'filter_postcode'中输入了任何字符,则禁用字段 'filter_from' 和 'filter_to' .

2/仅当任何字段中没有输入时才重新启用字段“filter_from”和“filter_to” 'filter_loan_id'、'filter_fname'、'filter_lname'、'filter_postcode' .也就是说,所有 4 个字段都是空的

我有以下适用于第 1 点的代码 - 当任何其他字段输入数据时,它会禁用这 2 个字段。

它不能按第 2 点的要求工作 - 如果其他任何一个字段被清除,它目前会重新启用这 2 个字段。它应该只在清除所有其他字段时重新启用这 2 个字段。

应忽略字段“filter_com”和“filter_employer”。此处仅提及它们是为了说明并非表单上的所有字段都将用于禁用其他 2 个字段,只是选定的字段。

<form>
  <input name="filter_from" type="text" autocomplete="off">
  <input name="filter_to" type="text" autocomplete="off">
  <input name="filter_loan_id" type="text" autocomplete="off">
  <input name="filter_fname" type="text" autocomplete="off">
  <input name="filter_lname" type="text" autocomplete="off">
  <input name="filter_postcode" type="text" autocomplete="off">
  <input name="filter_com" type="text" autocomplete="off">
  <input name="filter_employer" type="text" autocomplete="off">
</form>

$(document).ready(function() {

    $('input[name=filter_fname], input[name=filter_lname], input[name=filter_loan_id], input[name=filter_postcode]').change(function() {
        if ($(this).val() != '') {
            $('input[name=filter_from]').prop('disabled', true);
            $('input[name=filter_to]').prop('disabled', true);
        } else {
            $('input[name=filter_from]').prop('disabled', false);
            $('input[name=filter_to]').prop('disabled', false);
        }
    });

});  

最佳答案

尝试连接所有相关输入的值并用它来检查

$(document).ready(function() {

  var disableable = $('input[name=filter_from], input[name=filter_to]'),
      valuable = $('input[name=filter_fname], input[name=filter_lname], input[name=filter_loan_id], input[name=filter_postcode]').on('input change', function() {

      var combinedValue = valuable.get().map(function(element) {
        return element.value;
      }).join('');

      disableable.prop('disabled', combinedValue !== '');
    });
  valuable.trigger('change');
});
input:disabled{background:#ccc;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


<form>
  filter_from<input name="filter_from" type="text" autocomplete="off"><br> filter_to
  <input name="filter_to" type="text" autocomplete="off"><br> filter_loan_id
  <input name="filter_loan_id" type="text" autocomplete="off"><br> filter_fname
  <input name="filter_fname" type="text" autocomplete="off"><br> filter_lname
  <input name="filter_lname" type="text" autocomplete="off"><br> filter_postcode
  <input name="filter_postcode" type="text" autocomplete="off"><br> filter_com
  <input name="filter_com" type="text" autocomplete="off"><br> filter_employer
  <input name="filter_employer" type="text" autocomplete="off">
</form>

关于javascript - 在输入到一组其他字段时禁用表单字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47662801/

相关文章:

javascript - 用于突出显示和提醒网页上所有链接的 Google Chrome 扩展程序

javascript - 如何设置 bxslider 图像 slider 的样式?

jquery - jQuery 模板文档在哪里?

javascript - 单击链接时如何滚动到元素

javascript - Jstree Leaf Node 是一个可扩展的图标。我想要叶 Node 的减号(-)

javascript - html 标签和 Angular 中的属性不起作用

javascript - 如何将输入类型时间的值传递给 Date 对象?

javascript - 我可以知道一个javascript文件是否已经被执行了吗?

javascript - Angularjs:使用日期助手格式化 UTC 时间的时间戳

javascript - 选择 Kendo UI 网格行来填充选择菜单?