Skye Lans
Skye Lans

Reputation: 41

submit function - display a warning message

I'm trying to display a warning message when a user types certain text into an input box. The problem is I only want to return false one time so the user can submit the form on the second click even if they don't change the text. I've tried adding a counter but jquery is not remembering the count on a second sumbit click. What is the best way to go about this?

if (email.val().indexOf("gmail") > -1)) 
        {
        $('input[name=email]').css('border-color','red');    
        $("#submit").after('<p>Error - Do you want to use a gmail account?</p>');
        return false;
        }

Upvotes: 1

Views: 56

Answers (3)

Zac Braddy
Zac Braddy

Reputation: 611

Why don't you put a class on your text box and remove it in the first failure? Thus when you look for it with jQuery a second time you won't be able to find it it and won't be able to apply the rule. I implmented it like so:

var submit = function()
{
    var email = $('.emailFirstTry')

    if (email.length > 0 && email.val().indexOf("gmail") > -1)
    {
        $('input[name=email]').css('border-color','red');    
        $("#submit").text('Error - Do you want to use a gmail account');
        $('.emailFirstTry').removeClass('emailFirstTry');
        return false;
    } 

    $('input[name=email]').css('border-color','none');
    $("#submit").text('Success!');
    return true;
};

You can see it in action on this fiddle right here: http://jsfiddle.net/ozrevulsion/39wjbwcr/

Hope the helps :)

Upvotes: 0

Paul S.
Paul S.

Reputation: 66334

Just set up some kind of flag

var flags = {}; // in some higher scope
// then later, in your verification function
if (email.val().indexOf("gmail") > -1 && !flags.warnedGmail) {
    $('input[name=email]').css('border-color','red');    
    $("#submit").after('<p>Error - Do you want to use a gmail account?</p>');
    flags.warnedGmail = true;
    return false;
}

Upvotes: 1

Maximillian Laumeister
Maximillian Laumeister

Reputation: 20359

I would use a flag to determine if they have already tried to submit, and if they haven't, then you give them the warning and return false:

var triedSubmit = false;
$(/* Your jQuery Object */).click(function() {
    if (email.val().indexOf("gmail") > -1)) 
    {
            if (!triedSubmit){
                $('input[name=email]').css('border-color','red');    
                $("#submit").after('<p>Error - Do you want to use a gmail account?</p>');
                triedSubmit = true;
                return false;
            }
    }
}

Upvotes: 1

Related Questions