【问题标题】:disabled/enabled button - jquery禁用/启用按钮 - jquery
【发布时间】:2014-08-03 03:40:58
【问题描述】:

我想根据用户使用 jquery 的输入的完整性来禁用和启用提交输入类型。我可以关闭它但不能打开它:(

$('#submit_btn').attr('disabled', 'disabled');

var nameFlag = false;;
var emailFlag = false;
var pwdFlag = false;

$('#f-name').focusout(function() {
    if($(this).val() == '') {
        nameFlag = false;
    } else if($(this).val().length < 4) {
        nameFlag = false;
    } else {
        nameFlag = true;
        //alert(nameFlag);
    }
});


$('#f-email').focusout(function() {
    if($(this).val() == '') {
        emailFlag = false;
    } else if($(this).val().length < 4) {
        emailFlag = false;
    } else {
        emailFlag = true;
        //alert(emailFlag);
    }
});


$('#f-pwd').focusout(function() {
    if($(this).val() == '') {
        pwdFlag = false;
    } else if($(this).val().length < 6) {
        pwdFlag = false;
    } else {
        pwdFlag = true;
        //alert(pwdFlag);
    }
});

//alert(nameFlag + " " + emailFlag + " " + pwdFlag);
if(nameFlag && emailFlag && pwdFlag) {
    $('#submit_btn').removeAttr('disabled');
} else {
    $('#submit_btn').attr('disabled', 'disabled');
}

所以我放了一些警告框,看到我的标志根据用户输入而改变,但它没有启用我的提交按钮

【问题讨论】:

  • 是的,我找不到那个帖子。无论如何,读完这篇文章后,我认为我的代码在设置/删除属性禁用时是相似的,只是我有一个布尔值来控制该操作。

标签: javascript jquery


【解决方案1】:

我也尝试使用 jquery attr 来做同样的事情。它工作正常。你准备好文档内的代码了吗?

$(document).ready(function () {
    $('#submit_btn').attr('disabled', 'disabled');
    var nameFlag = false;
    var emailFlag = false;
    var pwdFlag = false;
    $("#fName").focusout(function () {
        if ($(this).val() == '') {
            DisabledButton();
        } else if ($(this).val().length < 4) {
            DisabledButton();
        } else {
            EnabledButton();
        }
    });


    $('#f-email').focusout(function () {
        if ($(this).val() == '') {
            DisabledButton()
        } else if ($(this).val().length < 4) {
            DisabledButton();
        } else {
            EnabledButton();
        }
    });

    function EnabledButton() {
        $('#submit_btn').removeAttr('disabled');
    }

    function DisabledButton() {
        $('#submit_btn').attr('disabled', 'disabled')
    }
});

见小提琴链接http://jsfiddle.net/2jDKm/2/

【讨论】:

    【解决方案2】:

    使用这个:
    http://jsfiddle.net/jq7Q7/1/
    我将您的检查代码移至一个新功能,并在您每次关注控件时检查它:

        $('#submit_btn').attr('disabled', 'disabled');
    
        var nameFlag = false;;
        var emailFlag = false;
        var pwdFlag = false;
    
        $('#f-name').focusout(function() {
            if($(this).val() == '') {
                nameFlag = false;
            } else if($(this).val().length < 4) {
                nameFlag = false;
            } else {
                nameFlag = true;
                //alert(nameFlag);
            }
             checkform();
        });
    
    
        $('#f-email').focusout(function() {
            if($(this).val() == '') {
                emailFlag = false;
            } else if($(this).val().length < 4) {
                emailFlag = false;
            } else {
                emailFlag = true;
                //alert(emailFlag);
            }
             checkform();
        });
    
    
        $('#f-pwd').focusout(function() {
            if($(this).val() == '') {
                pwdFlag = false;
            } else if($(this).val().length < 6) {
                pwdFlag = false;
            } else {
                pwdFlag = true;
                //alert(pwdFlag);
            }
             checkform();
        });
        function checkform(){
            //alert(nameFlag + " " + emailFlag + " " + pwdFlag);
            if(nameFlag && emailFlag && pwdFlag) {
                $('#submit_btn').removeAttr('disabled');
            } else {
                $('#submit_btn').attr('disabled', 'disabled');
            }
        }
    

    【讨论】:

    • 谢谢。但我不确定,为什么我的代码不起作用。 (我是 jquery 的新手,所以我想了解更多有关它的信息)。
    • 您的代码不起作用,因为您在页面加载时检查了您的标志(所有字段为空且标志为假),您应该在每次输入更改时检查您的标志
    【解决方案3】:

    您可以使用 attr() 的 prop() 方法

    $('#submit_btn').prop('disabled', true);
    

    和

    $('#submit_btn').prop('disabled', false);
    

    可以帮助你解决这个问题

    【讨论】:

    • 我刚改成 prop() 函数,它也不起作用。我建议它永远不要达到 if 语句的真实条件,尽管标志已更改。
    • 您可以在这里发布您的 html 吗?或 jsFiddle 链接
    【解决方案4】:

    这是我的html:

    <form class="form_box prefix_clear" method="get" action="#login">
        <div class="f-field">
            <label for="f-name">Username:</label><br/>
            <input id="f-name" class="submit_text" type="text" name="username"/>
            <p class="f-error case1">Please enter your username</p>
            <p class="f-error case2">Your username has to be at least 4 characters</p>
        </div>
        <div class="f-field">
            <label for="f-email">Email:</label><br/>
            <input id="f-email" class="submit_text" type="text" name="email"/>
            <p class="f-error case1">Please enter your email</p>
            <p class="f-error case2">Your email is not a valid format</p>
        </div>
        <div  class="f-field">
            <label for="f-pwd">Password:</label><br/>
            <input id="f-pwd" class="submit_text" type="password" name="password"/>
            <p class="f-error case1">Please enter your password</p>
            <p class="f-error case2">Your password has to be at least 6 letters (A-Z, a-z, 0-9)</p>
        </div>
        <div class="prefix_clear">
            <input id="submit_btn" class="f-btn" type="submit" name="submit" value="Create Account"/>
        </div>
    </form>
    

    【讨论】:

      【解决方案5】:

      你的变量有问题。试试这段代码,它工作正常。

      $(document).ready(function () {
          $('#submit_btn').attr('disabled', 'disabled');
      
          var nameFlag = false;;
          var emailFlag = false;
          var pwdFlag = false;
      
          $('#f-name').focusout(function () {
              if ($(this).val() == '') {
                  DisabledButton();
              } else if ($(this).val().length < 4) {
                  DisabledButton();
              } else {
                  EnabledButton();
                  //alert(nameFlag);
              }
          });
      
      
          $('#f-email').focusout(function () {
              if ($(this).val() == '') {
                  DisabledButton();
              } else if ($(this).val().length < 4) {
                  DisabledButton();
              } else {
                  EnabledButton();
                  //alert(emailFlag);
              }
          });
      
      
          $('#f-pwd').focusout(function () {
              if ($(this).val() == '') {
                  DisabledButton();
              } else if ($(this).val().length < 6) {
                  DisabledButton();
              } else {
                  EnabledButton();
              }
          });
      
          function EnabledButton() {
              $('#submit_btn').removeAttr('disabled');
          }
      
          function DisabledButton() {
              $('#submit_btn').attr('disabled', 'disabled')
          }
      });
      

      见 jsfiddle 链接http://jsfiddle.net/2jDKm/4/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-12-02
        • 2010-12-08
        • 1970-01-01
        • 1970-01-01
        • 2014-11-28
        • 1970-01-01
        相关资源
        最近更新 更多