I mean, what the hell, at least 6 plugins for such a basic feature??

Jörn

On Fri, Jul 18, 2008 at 5:56 PM, Jörn Zaefferer
<[EMAIL PROTECTED]> wrote:
> Another one, with, despite its name, support for password fields (by
> cloning the field and displaying a normal input while not focused):
>
> Demo: http://dev.jquery.com/view/trunk/plugins/searchField/
> Source: 
> http://dev.jquery.com/view/trunk/plugins/searchField/jquery.searchField.js
> Usage:
> $("input").searchField(); //uses the title attribute
> $("input").searchField("Label"); // uses the given label
>
> I'd like to gather all these various implementations under the
> umbrella of jQuery UI forms, into one watermark/whatever plugin,
> together with at least the form and validation plugins...
>
> Jörn
>
> On Fri, Jul 18, 2008 at 3:10 PM, Karl Swedberg <[EMAIL PROTECTED]> wrote:
>> I really like this approach, Scott!
>> The advantage it has is that it plays nicely with form validation. Not an
>> issue with a simple search field, but for larger forms in which the fields
>> need to be empty unless user enters text, the other approach could foil
>> validating on required fields because those fields would have the
>> placeholder text.
>> I wrote a similar plugin for a project at work. With mine, you select the
>> input rather than the label. It uses the label text by default, but it can
>> also use the input's title attribute or a custom string. The disadvantage of
>> mine is that it might require some additional CSS to get the label to line
>> up properly.
>> Anyway, here it is, in case anyone is interested.
>> (function($) {
>> $.fn.defaulttext = function(options) {
>>   var elText = {
>>     title: function(input) {
>>       return $(input).attr('title');
>>     },
>>     label: function(input) {
>>       return $('label[for=' + input.id +']').text();
>>     }
>>   };
>>   var defText;
>>   return this.each(function() {
>>     var $input = $(this);
>>     if (this.type === 'text' || this.nodeName.toLowerCase() === 'textarea')
>> {
>>       var opts = $.extend({}, $.fn.defaulttext.defaults, options || {},
>> $.metadata ? $input.metadata() : $.meta ? $input.data() : {});
>>       if (opts.dtText.constructor === Function) {
>>         defText = opts.dtText(this);
>>       } else if (opts.dtText && opts.dtText.constructor === String){
>>         defText = (/(title|label)/).test(opts.dtText) ?
>> elText[opts.dtText](this) : opts.dtText;
>>       }
>>       if (!defText) {return;}
>>       if ($input.parent().css('position') == 'static') {
>>         $input.parent().css({position: 'relative'});
>>       }
>>       $(opts.dtTag).html(defText)
>>         .addClass(opts.dtClass)
>>         .css({
>>           position: 'absolute',
>>           top: $input.position().top,
>>           left: $input.position().left,
>>           display: 'none'
>>         })
>>         .insertBefore($input);
>>       // hide default text on focus
>>       $input.focus(function() {
>>         dtHide($input);
>>       });
>>       $input.prev('.' + opts.dtClass).click(function() {
>>         dtHide($input);
>>         $input.focus();
>>       });
>>       // conditionally show default text on ready and input blur
>>       dtShow($input);
>>       $input.blur(function() {
>>         dtShow($input);
>>       });
>>     }
>>   });
>>
>>   function dtHide(el) {
>>     el.prev().hide();
>>   }
>>   function dtShow(el) {
>>     if ($.trim(el.val()) == '') {
>>       el.prev().show();
>>     }
>>   }
>> };
>> $.fn.defaulttext.defaults = {
>>   dtTag: '<span></span>', // this is the element used for the default text
>>   dtClass: 'default-text', // class applied to the default text
>>   dtText: 'label'            // 'label' uses text of input's label; 'title'
>> uses input's title attribute.
>>                               //  otherwise, use some other string or
>> function
>> };
>> })(jQuery);
>>
>>
>> --Karl
>> ____________
>> Karl Swedberg
>> www.englishrules.com
>> www.learningjquery.com
>>
>>
>>
>> On Jul 17, 2008, at 9:24 PM, Scott Sauyet wrote:
>>
>> Andy Matthews wrote:
>>
>> Is there a plugin for this by chance? I know it's pretty quick to write, but
>> wanted to find out if someone's already done it better than I could.
>>
>> Also, would toggle() work for this sort of thing? Is there a focus/blur
>> toggle in the jQuery core?
>>
>> Something similar I did some time ago:
>>
>> http://scott.sauyet.com/thoughts/archives/2007/03/31/overlabel-with-jquery/
>>
>> (scroll to the bottom for the final version.)  This places the label for a
>> text field on top of that box but hides it on focus or when there is actual
>> content in the field.  It's mainly a real-estate saving feature.
>>
>>  -- Scott
>>
>>
>

Reply via email to