Jquery禁用/启用输入文本更改复选框

ulmd4ohb  于 2023-04-29  发布在  jQuery
关注(0)|答案(1)|浏览(127)

如果输入文本不为空,我想禁用复选框,如果输入文本为空,我想启用相同的复选框。当输入文本不为空时,禁用部分工作,但当输入文本被清除时,启用部分不工作。

$('#userId').on('change paste keyup', function () {
     if ($(this).val() !=='') {
      $("#vendorId").prop("disabled", true);
      }else{
       $("#vendorId").prop("disabled", false);
      }
    });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" class="form-control"  id="userId" placeholder="user's name">
  
   <div>
      <label>
      <input type="checkbox" class="checkbox" id="vendorId" value="vendor">
        Vendors
       </label>
      </div>
odopli94

odopli941#

您的代码似乎是正确的,它在代码片段演示中工作。它应该在输入字段不为空时禁用复选框,并在输入字段为空时启用它。
清除输入文本时启用部分不起作用的一个可能原因是,可能有另一个事件侦听器阻止启用复选框。您可以尝试添加控制台。日志语句调试代码并检查事件侦听器是否按预期工作。

$('#userId').on('change paste keyup', function () {
  console.log($(this).val()); // Debugging line
  if ($(this).val() !== '') {
    $("#vendorId").prop("disabled", true);
  } else {
    $("#vendorId").prop("disabled", false);
  }
});

您还可以尝试通过直接使用prop()方法而不使用if-else语句来简化代码。

$('#userId').on('change paste keyup', function () {
  if ($(this).val() !== '') {
    $("#vendorId").prop("disabled", true);
  } else {
    $("#vendorId").prop("disabled", false);
  }
});
<!-- Include jQuery library -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<!-- Input field for user's name -->
<input type="text" class="form-control" id="userId" placeholder="User's name">

<!-- Checkbox for vendors -->
<div>
  <label>
    <input type="checkbox" class="checkbox" id="vendorId" value="vendor">
    Vendors
  </label>
</div>

相关问题