Jose Peres
Jose Peres

Reputation: 317

Validate a form only if every input is empty

Well, the question's pretty self-explanatory. I've been looking for a while and haven't found a proper way to do this kind of validation.

All I need to do is to run an error message if all the inputs are empty. If one of them is filled, then I don't need to stop the form from submitting.

I thought something like:

function checkForm() {
    $('input').each(function(){
        if( $(this).val() == "" ){
          return false;
        }
    });
});

But this will stop my form if there's, at least, one input without data.

Any ideas? Thanks in advance.

Upvotes: 0

Views: 38

Answers (2)

Kristianmitk
Kristianmitk

Reputation: 4778

Reverse your logic since you want to check if the value is non-empty for one input field.

Also you probably want to return from your actual function and not from the callback which has no effect.

function checkForm() {
    let bool = false;
    $('input').each(function(){
        if( $(this).val() !== '' ){
          bool = true;
        }
    });
    console.log(bool);
    return bool;
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text">
<input type="text">
<input type="text">
<button onclick="checkForm()">check</button>

Upvotes: 1

Kevin Boucher
Kevin Boucher

Reputation: 16705

Reverse your logic. I.e. return true if any input has a value, otherwise return false:

function checkForm() {
    $('input').each(function() {
        if ($(this).val() !== '') {
            return true;
        }
    });

    return false;
};

Upvotes: 2

Related Questions