Disable/Enable Submit Button until all forms have been filled

后端 未结 9 602
囚心锁ツ
囚心锁ツ 2020-12-13 06:59

I want my form submit button to be disabled/enabled depending on if the form is completely filled.

When the inputs are filled, the disabled button changes to enabled

相关标签:
9条回答
  • 2020-12-13 07:40

    Just use

    document.getElementById('submitbutton').disabled = !cansubmit;
    

    instead of the the if-clause that works only one-way.

    Also, for the users who have JS disabled, I'd suggest to set the initial disabled by JS only. To do so, just move the script behind the <form> and call checkform(); once.

    0 讨论(0)
  • 2020-12-13 07:40

    Just add an else then:

    function checkform()
    {
        var f = document.forms["theform"].elements;
        var cansubmit = true;
    
        for (var i = 0; i < f.length; i++) {
            if (f[i].value.length == 0) cansubmit = false;
        }
    
        if (cansubmit) {
            document.getElementById('submitbutton').disabled = false;
        }
        else {
            document.getElementById('submitbutton').disabled = 'disabled';
        }
    }
    
    0 讨论(0)
  • 2020-12-13 07:45
    <form name="theform">
        <input type="text" />
        <input type="text" />`enter code here`
        <input id="submitbutton" type="submit"disabled="disabled" value="Submit"/>
    </form>
    
    <script type="text/javascript" language="javascript">
    
        let txt = document.querySelectorAll('[type="text"]');
        for (let i = 0; i < txt.length; i++) {
            txt[i].oninput = () => {
                if (!(txt[0].value == '') && !(txt[1].value == '')) {
                    submitbutton.removeAttribute('disabled')
                }
            }
        }
    </script>
    
    0 讨论(0)
  • 2020-12-13 07:45

    Here is my way of validating a form with a disabled button. Check out the snippet below:

    var inp = document.getElementsByTagName("input");
    var btn = document.getElementById("btn");
    // Disable the button dynamically using javascript
    btn.disabled = "disabled";
    
    function checkForm() {
        for (var i = 0; i < inp.length; i++) {
            if (inp[i].checkValidity() == false) {
                btn.disabled = "disabled";
            } else {
                btn.disabled = false;
            }
        }
    }
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8"/>
        <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
        <title>JavaScript</title>
    </head>
    <body>
    
    <h1>Javascript form validation</h1>
    <p>Javascript constraint form validation example:</p>
    
    <form onkeyup="checkForm()" autocomplete="off" novalidate>
        <input type="text" name="fname" placeholder="First Name" required><br><br>
        <input type="text" name="lname" placeholder="Last Name" required><br><br>
        <button type="submit" id="btn">Submit</button>
    </form>
    
    </body>
    </html>


    Example explained:

    1. We create a variable to store all the input elements.
      var inp = document.getElementsByTagName("input");
      
    2. We create another variable to store the button element
      var btn = document.getElementById("btn");
      
    3. We loop over the collection of input elements
      for (var i = 0; i < inp.length; i++) {
          // Code
      }
      
    4. Finally, We use the checkValidity() method to check if the input elements (with a required attribute) are valid or not (Code is inserted inside the for loop). If it is invalid, then the button will remain disabled, else the attribute is removed.
      for (var i = 0; i < inp.length; i++) {
          if (inp[i].checkValidity() == false) {
              btn.disabled = "disabled";
          } else {
              btn.disabled = false;
          }
      }
      
    0 讨论(0)
  • 2020-12-13 07:47

    I just posted this on Disable Submit button until Input fields filled in. Works for me.

    Use the form onsubmit. Nice and clean. You don't have to worry about the change and keypress events firing. Don't have to worry about keyup and focus issues.

    http://www.w3schools.com/jsref/event_form_onsubmit.asp

    <form action="formpost.php" method="POST" onsubmit="return validateCreditCardForm()">
       ...
    </form>
    
    function validateCreditCardForm(){
        var result = false;
        if (($('#billing-cc-exp').val().length > 0) &&
            ($('#billing-cvv').val().length  > 0) &&
            ($('#billing-cc-number').val().length > 0)) {
                result = true;
        }
        return result;
    }
    
    0 讨论(0)
  • 2020-12-13 07:48

    I think this will be much simpler for beginners in JavaScript

        //The function checks if the password and confirm password match
        // Then disables the submit button for mismatch but enables if they match
                function checkPass()
                {
                    //Store the password field objects into variables ...
                    var pass1 = document.getElementById("register-password");
                    var pass2 = document.getElementById("confirm-password");
                    //Store the Confimation Message Object ...
                    var message = document.getElementById('confirmMessage');
                    //Set the colors we will be using ...
                    var goodColor = "#66cc66";
                    var badColor = "#ff6666";
                    //Compare the values in the password field 
                    //and the confirmation field
                    if(pass1.value == pass2.value){
                        //The passwords match. 
                        //Set the color to the good color and inform
                        //the user that they have entered the correct password 
                        pass2.style.backgroundColor = goodColor;
                        message.style.color = goodColor;
                        message.innerHTML = "Passwords Match!"
     //Enables the submit button when there's no mismatch                   
                        var tabPom = document.getElementById("btnSignUp");
                        $(tabPom ).prop('disabled', false);
                    }else{
                        //The passwords do not match.
                        //Set the color to the bad color and
                        //notify the user.
                        pass2.style.backgroundColor = badColor;
                        message.style.color = badColor;
                        message.innerHTML = "Passwords Do Not Match!"
     //Disables the submit button when there's mismatch       
                        var tabPom = document.getElementById("btnSignUp");
                        $(tabPom ).prop('disabled', true);
                    }
                } 
    
    0 讨论(0)
提交回复
热议问题