【问题标题】:jQuery disable button if either input is empty如果任一输入为空,则 jQuery 禁用按钮
【发布时间】:2017-07-01 22:04:56
【问题描述】:

默认情况下禁用按钮。有两个文本输入。如果其中一个为空,则表单应保持禁用状态。如果两个字段都有值,则应启用该按钮。

试试这个……

$(document).ready(function(){
    $('#custNameNext').prop('disabled',true);
    $('#customer').keyup(function(){
        $(this).val($(this).val().replace(/[^\w\s]+/g, ''));
        $('#custNameNext').prop('disabled', ((this.value == '') || ($('#customerCost').val() == '')) ? true : false);
    });
});

...但是 b/c 我在一个 keyup 中,除非我在两个字段中都有值,否则该按钮不会启用,然后返回到 keyup 的第一个字段并输入其他文本。

无法思考这个问题!

【问题讨论】:

    标签: jquery


    【解决方案1】:

    这应该适合你:

    $(document).ready(function() {
      $('#custNameNext').prop('disabled', true);
    
      function validateNextButton() {
        var buttonDisabled = $('#customer').val().trim() === '' || $('#customerCost').val().trim() === '';
        $('#custNameNext').prop('disabled', buttonDisabled);
      }
    
      $('#customer').on('keyup', validateNextButton);
      $('#customerCost').on('keyup', validateNextButton);
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <form>
      <input id="customer" name="first-input" type="text">
      <input id="customerCost" name="second-input" type="text">
      <input id="custNameNext" type="submit" value="Submit" disabled="disabled">
    </form>

    我已在您的 sn-p 中插入了您已有的 ID。作为建议,最好省略长行代码并将它们拆分成更连贯的代码。

    buttonDisabled 中保存的测试语句可以更改,您是否需要任何其他验证才能启用提交按钮(例如正则表达式)。

    【讨论】:

    • 感谢您的回答!对我很有用,因为它包含了我需要的 keyup 功能。让两个字段使用相同的验证功能是确保两个字段都不为空的绝妙方法,无论哪个字段先填写!我将我的正则表达式添加到 validateNextButton 并像魅力一样工作!
    • 很高兴为您提供帮助,@webguy。
    【解决方案2】:

    您可以将两个输入都添加到事件处理程序中,并且通过使用 input 事件,您还将捕获粘贴和其他一些场景。

    然后只过滤值以检查它们是否为空

    $(document).ready(function() {
        $('#custNameNext').prop('disabled', true);
    
        $('#customer, #customerCost').on('input', function() {
              var val = $('#customer, #customerCost').filter(function() {
                    return this.value.trim().length !== 0;
            }).length === 0;
    
            $('#custNameNext').prop('disabled', val);
        });
    });
    

    FIDDLE

    【讨论】:

    • 感谢您的回答!我无法轻松弄清楚如何集成我需要限制客户文件中可能包含的内容的 keyup,但我从你的回答中学到了一些东西,我很感激!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    相关资源
    最近更新 更多