This line:

       if ($tgt.not('form')) { //don't toggle when clicking the form!

should be :

       if (!$tgt.is('form')) { //don't toggle when clicking the form!

The first always returns the jQuery object, so it's always "truthy."

The second returns a boolean. Will be true if the target element is not a form.

--Karl
_________________
Karl Swedberg
www.englishrules.com
www.learningjquery.com



On May 23, 2008, at 10:27 AM, Ridge wrote:


Hm. Replaced my code with yours, and it's still toggling the form when
its clicked. :(

On May 22, 5:29 pm, Pyrolupus <[EMAIL PROTECTED]> wrote:
You need to have your event handler handle things differently
depending upon the specific child element that was clicked.

For example:

$('div#homepage_boxes> div.col').click(function(event) {
       var $tgt = $(event.target);
       if ($tgt.not('form')) { //don't toggle when clicking the form!
               $
(this ).siblings ('.selected').andSelf().toggleClass('selected').end().end();
       }

});

Seehttp://www.learningjquery.com/2008/03/working-with-events-part-1
for more complete coverage of this.  It's where I learned it. :)

~Pyro
On May 22, 3:55 pm, Ridge <[EMAIL PROTECTED]> wrote:

I have this page:http://tinyurl.com/5hascg. I'm using JQuery for a
few things - :hover on the main content blocks, form validation, and
show/hide.

By themselves, everything is working great! But it's the
interoperability of the last two that are causing me a headache. When
you click anywhere in the "For your home" box, the content appears.
There's a form in that <div>. However, when you try to focus in that
<div> by clicking, the form hides.

So, what I'd like to know is how to show the <div> contents by
clicking anywhere in the <div>, but only hide it by clicking on the
header (which I've temporarily given a background color of green to
make it stand out).

For reference, here's the contents of my $(document).ready section
which is linked from the page above. Thanks!:

$(document).ready(function(){

  // Add class to shift background images on load
  $('#box_home').addClass('pageload');
  $('#box_business').addClass('pageload');
  $('#box_account').addClass('pageload');

  // Show/hide forms
  $('div#homepage_boxes form').hide();
  $('div#homepage_boxes> div.col').click(function() {
     $
(this ).siblings ('.selected').andSelf().toggleClass('selected').end().end()
        //.next('form').slideToggle('fast')
        //.siblings('form:visible').slideUp('fast');
  });

  // Add homepage box hover effect for IE6
  $('div#homepage_boxes .col').hover(function() {
     $(this).addClass('ie6boxhover');
  }, function() {
     $(this).removeClass('ie6boxhover');
  });

  // Form validation
  $.validator.setDefaults({
     submitHandler: function() { alert("submitted!"); }
  });

  $("#homeform").validate({
     rules: {
        txtZipcode: {
           required: true,
           minlength: 5
        }
     },
     messages: {
        txtZipcode: {
           required: "To continue processing your request, we need a
5-digit zip code.  Please re-type the zip code of your service
address.",
minlength: "Your zip code must be 5-digits long. Please re-
type the zip code of your service address."
        }
     }
  });

});

Reply via email to