【问题标题】:enable submit button if all fields filled [duplicate]如果所有字段均已填写,则启用提交按钮[重复]
【发布时间】:2017-07-27 11:30:24
【问题描述】:

我有一个表格

 <form>
    Username<br />
    <input type="text" id="user_input" name="username" /><br />
    Password<br />
    <input type="password" id="pass_input" name="password" /><br />
    Confirm Password<br />
    <input type="password" id="v_pass_input" name="v_password" /><br />
    Email<br />
    <input type="text" id="email" name="email" /><br /> <br/>
    <textarea name="adress" id="adress" ></textarea>
    <br>

    <input type="radio" name="gender" value="male"> Male
  <input type="radio" name="gender" value="female"> Female<br>
    <input type="submit" id="register" value="Register" disabled="disabled" />

</form>

我想禁用我的提交按钮,直到所有字段都有值。现在除了单选按钮外一切正常。

JS:

<script>

    (function() {
    $('form > input,textarea,radio').keyup(function() {

        var empty = false;
        $('form > input,textarea,radio').each(function() {
            if ($(this).val() == '') {
                empty = true;
            }
        });

        if (empty) {
            $('#register').attr('disabled', 'disabled');
        } else {
            $('#register').removeAttr('disabled');
        }
    });
})()
    </script>

我不知道这是否是好的代码。我对 jquery 完全陌生,所以请纠正我我做错了什么。 我想禁用我的提交按钮,直到所有字段都有值,包括单选按钮。请帮助我。提前致谢

【问题讨论】:

  • radio 不是有效的 html 元素
  • @madalinivascu:请帮帮我...
  • 你签出JSfiddle:

标签: php jquery html


【解决方案1】:

您可以使用以下方法检查单选按钮是否被选中:

if (!$("input[name='gender']:checked").val()) {
  alert('Nothing is checked!');
} else {
  alert('One is checked');
}

【讨论】:

    【解决方案2】:

    您需要使用prop() 并检查type。如果类型是radio,可以添加验证检查:

    required = function(fields) {
      var valid = true;
      fields.each(function() { // iterate all
        var $this = $(this);
        if ((($this.is(':text') || $this.is('textarea')) && !$this.val()) || // text and textarea
          ($this.is(':radio') && !$('input[name=' + $this.attr("name") + ']:checked').length)) { // radio
          valid = false;
        }
      });
      return valid;
    }
    
    validateRealTime = function() {
      var fields = $("form :input");
      fields.on('keyup change keypress blur', function() {
        if (required(fields)) {
          {
            $("#register").prop('disabled', false);
          }
        } else {
          {
            $("#register").prop('disabled', true);
          }
        }
      });
    }
    
    validateRealTime();
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <form>
      Username<br />
      <input type="text" id="user_input" name="username" /><br /> Password
      <br />
      <input type="password" id="pass_input" name="password" /><br /> Confirm Password<br />
      <input type="password" id="v_pass_input" name="v_password" /><br /> Email
      <br />
      <input type="text" id="email" name="email" /><br /> <br/>
      <textarea name="adress" id="adress"></textarea>
      <br>
    
      <input type="radio" name="gender" value="male"> Male
      <input type="radio" name="gender" value="female"> Female<br>
      <input type="submit" id="register" value="Register" disabled="disabled" />
    
    </form>

    【讨论】:

    • 感谢您的评论。但我的工作方式与以前不同
    • @teststack - 已更新代码。立即检查。
    • -谢谢亲爱的,非常感谢
    • 不客气。快乐编码!
    猜你喜欢
    • 1970-01-01
    • 2017-10-25
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多