当“选择”字段和“输入”字段都具有值时启用“禁用的提交按钮”吗?

时间:2019-02-27 17:43:14

标签: jquery form-submit disabled-control submit-button

我喜欢这个网站,并且能够向大家学习很多东西。但是,这是一个我找不到答案的问题:

我有一个带有“选择”下拉列表和一个“输入”字段(均需填写)和一个禁用的“提交”按钮的迷你表单。我的客户需要禁用/显示灰色按钮,直到这两个字段都被填充,但是我无法执行该操作。

到目前为止,我提供的代码仅适用于Input。我试图在初始函数中并入“ ($('#selectBox')。on('change',function(){”)以向“选择”字段发送信号,但是它破坏了所有内容,我没有不知道要去哪里。

我认为不是让字段独立地工作(就像我似乎一直在做的那样),我认为每个字段都需要在JQuery代码内相互反弹/读取,以判断每个字段都有一个有效值。但是我一直在努力寻找联系(我对JS / JQ还是很陌生-如果错误,请原谅我的无知)。

我到处都在寻找解决方案,但是我没有运气找到答案。如果我错过了可以帮助我的链接或上一个问题,请告诉我,谢谢您的见解!

https://jsfiddle.net/jdraeger/2w68qs0y/2/

$(function() {
      $('#searchInput').keyup(function() {
      if ($(this).val() == '') {
          $('.enableOnInput').prop('disabled', true);
    } else {
          $('.enableOnInput').prop('disabled', false);
        }
      });
   })
<body>
  <div id='frame'>
    <div class='search'>
      <form method='post'>
        <select id="selectBox" class="selectBox" required>
          <option value="">--Select--</option>
          <option value="Yes">Yes</option>
          <option value="No">No</option>
        </select>
        <input type='text' name='searchQuery' id='searchInput' required/>
        <input type='submit' name='submit' id='submitBtn' class='enableOnInput' disabled='disabled' />
      </form>
    </div>
  </div>
</body>

2 个答案:

答案 0 :(得分:0)

两个字段和两个事件...

您可以为此编写一个“处理程序”。只需使用.on()方法,该方法就可以绑定许多事件(此处为keyupchange)。然后,在比较中,检查两个值。如果一个另一个为空,请禁用该按钮。

$(function() {
  $('#searchInput, #selectBox').on('keyup change',function() {
    if ($('#searchInput').val() == '' || $('#selectBox').val() == '') {
      $('.enableOnInput').prop('disabled', true);
    } else {
      $('.enableOnInput').prop('disabled', false);
    }
  });
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<body>
  <div id='frame'>
    <div class='search'>
      <form method='post'>
        <select id="selectBox" class="selectBox" required>
          <option value="">--Select--</option>
          <option value="Yes">Yes</option>
          <option value="No">No</option>
        </select>
        <input type='text' name='searchQuery' id='searchInput' required/>
        <input type='submit' name='submit' id='submitBtn' class='enableOnInput' disabled='disabled' />
      </form>
    </div>
  </div>
</body>

通过将条件直接放在.prop()的true / false第二个参数中,甚至可以写得更短:

$(function() {
  $('#searchInput, #selectBox').on('keyup change',function() {
    $('.enableOnInput').prop('disabled', ($('#searchInput').val() == '' || $('#selectBox').val() == ''));
  });
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<body>
  <div id='frame'>
    <div class='search'>
      <form method='post'>
        <select id="selectBox" class="selectBox" required>
          <option value="">--Select--</option>
          <option value="Yes">Yes</option>
          <option value="No">No</option>
        </select>
        <input type='text' name='searchQuery' id='searchInput' required/>
        <input type='submit' name='submit' id='submitBtn' class='enableOnInput' disabled='disabled' />
      </form>
    </div>
  </div>
</body>

答案 1 :(得分:0)

您可以通过创建一个新功能来实现此功能,该功能将启用您的提交按钮,并在文本输入字段更改或选择字段更改时被调用

$('#selectBox','#searchInput').on('change', function() {
 enablingFunction();
 });

function enablingFunction(){
  if($('#selectBox').val() != "" && $('#searchInput').val() != ""){
    $('#submitBtn').prop("disabled", false);
   }
}