try this, it accounts for checking all the required fields to see if they are blank and disable
jQuery(function(){ // all the required text fields var $required = $('input.required:text'); // function checks for blank input var isBlank = function(str) { return $.trim(str).length==0 } // function checks if other required fields are blank var checkAllRequired = function () { var allFilled = true; $required.each(function() { if (isBlank(this.value)) allFilled = false; }); return allFilled; } // initially disable or enable the submit button $("#submit").attr('disabled', checkAllRequired() ? null : "disabled"); // same as $required each blur $required.blur(function() { // checks if current field is blank if (isBlank(this.value)) $("#" + this.id + "_error").fadeIn(500); else $("#" + this.id + "_error").fadeOut(500); $("#submit").attr('disabled', checkAllRequired() ? null : "disabled"); }); }); On Dec 22, 3:54 pm, "Rick Faircloth" <r...@whitestonemedia.com> wrote: > Ok...after a lot of experimentation, I've got a solution > that's working to the point that I've attempted to implement it. > > Here's the code: > > $(document).ready(function() { > > $('input:text.required').each(function() { > $(this).blur(function() { > var val = (this.value.length); > if (val == 0) > { $("#" + this.id + "_error").fadeIn(500); > $('#submit').attr('disabled', 'disabled'); } > else > { $("#" + this.id + "_error").fadeOut(500); > $('#submit').removeAttr('disabled'); }; > > $('input:text.required').each(function() { > var val = (this.value.length); > if (val == 0) > { $('#submit').attr('disabled', 'disabled'); } > }); > > }); > }); > > }); > > This code allows for the following: > > - on blur of any text input with class 'required' the length is checked > - if the length of the required field is > 0, then the error message is shown > and the submit button for the form is disabled > > - the second half of the code checks all the text inputs with class 'required' > - if the length of any of the required text fields is 0, then the submit > button is disabled > > What I need to do now: > > - Allow for other type of inputs to be checked on blur, etc., such as selects > (Later, I'll add other types of validation, such as numeric, etc.) > > Question: > > - How do I modify ('input:text.required') to accommodate other types of > required inputs? > - I tried ('input:text.required, input:select.required') and > ('input:text.required', 'input:select.required') but that didn't > work > > Clues or hints? > > Thanks, > > Rick > > > -----Original Message----- > > From: jquery-en@googlegroups.com [mailto:jquery...@googlegroups.com] On > > Behalf Of MorningZ > > Sent: Monday, December 22, 2008 2:40 PM > > To: jQuery (English) > > Subject: [jQuery] Re: How can I generalize this code for all values? > > > Try this change > > > $("#submit").attr('disabled', (val == "") ? "disabled" : null); > > > If that doesn't work, then perhaps: > > > if (val == "") { > > $("#" + this.id + "_error").fadeIn(500); > > $("#submit").attr("disabled", "disabled"); > > } > > else { > > $("#" + this.id + "_error").fadeOut(500); > > $("#submit").removeAttr("disabled"); > > } > > > On Dec 22, 2:21 pm, "Rick Faircloth" <r...@whitestonemedia.com> wrote: > > > I see in your example code that you're still using a hard-coded name > > > for the input. I'd like it completely generalized for all variables. > > > > I'm working towards creating code for categories of input types: text, > > > radio, checkbox, and textarea, etc. > > > > I modified your example, and all seems to be working well with the code > > > below, except that the submit button is becoming enabled even when there > > > is an error message showing. I don't understand the last line enough > > > to even tinker with that...suggestions? > > > > Thanks, Rick > > > > Here's the new code: > > > > $(document).ready(function() { > > > > $("inp...@type='text']").each(function() { > > > > $(this).blur(function() { > > > var val = $.trim(this.value); > > > > if (val == "") > > > { $("#" + this.id + "_error").fadeIn(500); } > > > else > > > { $("#" + this.id + "_error").fadeOut(500); } > > > $("#submit").attr('disabled', (val == "") ? > > > "disabled" : ""); > > > }); > > > }); > > > > }); > > > > -----Original Message----- > > > > From: jquery-en@googlegroups.com [mailto:jquery...@googlegroups.com] On > > > > Behalf Of MorningZ > > > > Sent: Monday, December 22, 2008 1:44 PM > > > > To: jQuery (English) > > > > Subject: [jQuery] Re: How can I generalize this code for all values? > > > > > Just some advice: why mix "-" and "_" all up? it makes it easier if > > > > they were the same > > > > > for instance > > > > > <input type="text" id="street_number" /> > > > > <img id="street_number_error" src="error.png" /> > > > > > <input type="text" id="street_name" /> > > > > <img id="street_name_error" src="error.png" /> > > > > > $("input[id^='street_']").each(function() { > > > > var val = $.trim(this.value); > > > > if (val == "") { > > > > $("#" + this.id + "_error").fadeIn(500); > > > > } > > > > else { > > > > $("#" + this.id + "_error").fadeOut(500); > > > > } > > > > $("#submit").attr("disabled", (val == "") ? "disabled" : ""); > > > > }); > > > > > On Dec 22, 1:10 pm, "Rick Faircloth" <r...@whitestonemedia.com> wrote: > > > > > Don't know if that's the best phrasing for the subject, > > > > > but what I'm trying to do is develop some code that > > > > > will work for all for inputs of type 'text', instead > > > > > of hard-coding the id values. > > > > > > The original code is this: > > > > > > $('input#street_number').blur(function() { > > > > > > if (this.value.length == 0) > > > > > { $('#street-number-required-error').fadeIn(500); > > > > > $('#submit').attr('disabled', 'disabled') } > > > > > if (this.value.length > 0) > > > > > { $('#street-number-required-error').fadeOut(500); > > > > > $('#submit').attr('disabled', '') }; > > > > > > }); > > > > > > $('input#street_name').blur(function() { > > > > > > if (this.value.length == 0) > > > > > { $('#street-name-required-error').fadeIn(500); > > > > > $('#submit').attr('disabled', 'disabled') } > > > > > if (this.value.length > 0) > > > > > { $('#street-name-required-error').fadeOut(500); > > > > > $('#submit').attr('disabled', '') }; > > > > > > }); > > > > > > Here's my coding attempt: (no errors in firebug, but not response > > > > > from the DOM)... > > > > > > $(document).ready(function() { > > > > > $("inp...@type='text']").each(function(i) { > > > > > $(this).blur(function() { > > > > > if (this.value.length == 0) > > > > > { $(this.id.replace(/_/g, '-')+'-error').fadeIn(500); > > > > > $('#submit').attr('disabled', 'disabled') } > > > > > else > > > > > { $(this.id.replace(/_/g, '-')+'-error').fadeOut(500); > > > > > $('#submit').attr('disabled', '') } > > > > > }); > > > > > }); > > > > > > }); > > > > > > Anyone care to offer guidance to get this working? > > > > > > Thanks, > > > > > > Rick