> The select gets it's value from the selected child option.

Perhaps that's why I can't get validation to work!

> My advice would be to use the Jorn's plugin

Believe me, I've tried.

I worked with it every way I could think of to disable
the default "onSubmit" event and cause validation only
"onblur", but I couldn't make it work.

I haven't heard anything from Jorn, but if you or anyone
knows how to make the validation occur only onblur, please
let me know.

I don't need or want onSubmit at all...I have server-side
validation that will take care of it once it's submitted.

Rick


> -----Original Message-----
> From: jquery-en@googlegroups.com [mailto:jquery...@googlegroups.com] On 
> Behalf Of Karl Rudd
> Sent: Monday, December 22, 2008 11:37 PM
> To: jquery-en@googlegroups.com
> Subject: [jQuery] Re: How can I generalize this code for all values?
> 
> 
> Not quite sure what you're asking. Why would you try to set the
> select's value? The select gets it's value from the selected child
> option.
> 
> My advice would be to use the Jorn's plugin (
> http://docs.jquery.com/Plugins/Validation ). From what I can see it
> seems to do validation on blur by default.
> 
> Karl Rudd
> 
> On Tue, Dec 23, 2008 at 2:54 PM, Rick Faircloth
> <r...@whitestonemedia.com> wrote:
> >
> > D'oh!  I can't believe it was that simple!
> > And I read everything I could find, including the docs on selectors.
> > (Should have read it twice, I guess...)
> >
> > Anyway, question, Karl, et al...
> >
> > How can I validate a select input?
> >
> > I've tried setting the default select value to ""
> > which I thought would be equivalent to value.length == 0,
> > but nothing's happening with the error message.
> > Others are working fine.
> >
> > Suggestions?
> >
> > Thanks,
> >
> > Rick
> >
> >
> >
> >> -----Original Message-----
> >> From: jquery-en@googlegroups.com [mailto:jquery...@googlegroups.com] On 
> >> Behalf Of Karl Rudd
> >> Sent: Monday, December 22, 2008 10:43 PM
> >> To: jquery-en@googlegroups.com
> >> Subject: [jQuery] Re: How can I generalize this code for all values?
> >>
> >>
> >> From http://docs.jquery.com/Selectors (Forms section):
> >>
> >> :input
> >> Matches all input, textarea, select and button elements.
> >>
> >> To select all Form elements with a "required" class:
> >>
> >> $(':input.required')
> >>
> >> Karl Rudd
> >>
> >>
> >> On Tue, Dec 23, 2008 at 2:39 PM, Rick Faircloth
> >> <r...@whitestonemedia.com> wrote:
> >> >
> >> > How can this:
> >> >
> >> >        // all the required text fields
> >> >        var $required = $('input.required:text');
> >> >
> >> > be expanded to include 'input.required:select'  ?
> >> >
> >> > I tried all the variations I could think of, including:
> >> >
> >> > $('input.required:text', 'input.required:select')
> >> >
> >> > but that, and every other variation, throws an error.
> >> >
> >> > What's the syntax for specifying various types of required inputs?
> >> >
> >> > Rick
> >> >
> >> >
> >> >
> >> >> -----Original Message-----
> >> >> From: jquery-en@googlegroups.com [mailto:jquery...@googlegroups.com] On 
> >> >> Behalf Of Kean
> >> >> Sent: Monday, December 22, 2008 8:26 PM
> >> >> To: jQuery (English)
> >> >> Subject: [jQuery] Re: How can I generalize this code for all values?
> >> >>
> >> >>
> >> >> 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
> >> >
> >> >
> >
> >

Reply via email to