Hi Scott:

I am curious as to what might be the advantage of using your overlabel
plugin versus a much shorter script like the one below?

-Michael

<style>
        .login_labels{color: #eee;}
        .login_fields{color: #000;}
</style>

<script type="text/javascript">
$(function(){
$('#userid_field').focus(function() {
        $(this).attr({ class: 'login_fields'}).val(''); });
$('#password_field').focus(function() {
        $(this).attr({ class: 'login_fields', type: 'password'}).val('');
}); });
</script>       

<input type="text" name="user_id" id="userid_field" class="login_labels"
value="userid"> <input name="password" id="password_field"
class="login_labels" value="password">



> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On
> Behalf Of Scott Sauyet
> Sent: Saturday, March 31, 2007 1:55 PM
> To: jQuery Discussion
> Subject: [jQuery] My first plugin, overlabel
> 
> Hi Folks,
> 
> I'm fairly new to JQuery.  I recently needed a technique I had seen
> recently on A List Apart to combine labels and text input boxes into a
> single control in order to save space.  The technique is at
> 
>      http://alistapart.com/articles/makingcompactformsmoreaccessible
> 
> The Javascript there looked like a lot for what was done, so I tried to
> simplify it into a JQuery plug-in.  I'm looking for advice as to whether
> this is done in the best way possible.  A demo page is at
> 
>      http://scott.sauyet.com/Javascript/Demo/Overlabel/
> 
> and I've posted a blurb about it on my blog:
> 
>      http://tinyurl.com/2vx4n8
> 
> The code is fairly simple and much simpler than the original (see the
> original article or the commented out code in the demo page), but I'm
> wondering if there are further simplifications that should be made.  I'm
> especially bothered by the number of times I am switching between DOM
> objects and their JQuery counterparts.  It seems somehow counterintutive
> that I should need to do so as many times as I do.
> 
> Any advice would be appreciated.
> 
> This is the plug-in code:
> 
>      jQuery.fn.overlabel = function() {
>          this.each(function(index) {
>              var label = $(this); var field;
>              var id = this.htmlFor || label.attr('for');
>              if (id && (field = document.getElementById(id))) {
>                  var control = $(field);
>                  label.addClass("overlabel-apply");
>                  if (field.value !== '') {
>                      label.css("text-indent", "-1000px");
>                  }
>                  control.focus(function () {label.css("text-indent",
>                                     "-1000px");}).blur(function () {
>                      if (this.value === '') {
>                          label.css("text-indent", "0px");
>                      }
>                  });
>                  label.click(function() {
>                      var label = $(this); var field;
>                      var id = this.htmlFor || label.attr('for');
>                      if (id && (field = document.getElementById(id))) {
>                          field.focus();
>                      }
>                  });
>              }
>          });
>      }
> 
> And it would be called like this:
> 
>      $(document).ready(function() {
>          $("label.overlabel").overlabel();
>      });
> 
> 
> I'm also wondering what the thought is on just how much plug-ins should
> stand on their own.  This right now is dependent upon rules being
> defined in the CSS for the label (position: absolute, top, left,
> z-index) and for a common ancestor of the label and the input box
> (position:relative or absolute).  I could do all this in the plug-in, of
> course, but that limits flexibility on the CSS side.  Is there any
> established wisdom about this in the JQuery community?
> 
> Thanks for any insight you can offer,
> 
>    -- Scott Sauyet
> 
> 
> _______________________________________________
> jQuery mailing list
> discuss@jquery.com
> http://jquery.com/discuss/

Reply via email to