Instead of replacing the input, display a label above it. See
http://wiki.jqueryui.com/Watermark

Jörn

On Mon, Oct 19, 2009 at 4:17 PM, Liam Potter <radioactiv...@gmail.com>wrote:

>
> Here is how I do it. Just markup the form like normal (I use a definition
> list to lay out my forms)
>
>   $("input:password").each(function(){
>       var $currentPass = $(this)
>       $currentPass.css({opacity:0});
>             $currentPass.before('<input type="text" value="Password"
> class="removeit" style="position:absolute;z-index:10;" />');
>             var $visiblePassword = $(".removeit");
>             $visiblePassword.focus(function () {
>           $(this).css({opacity:0});
>           $currentPass.focus().css({opacity:1});
>       });
>                 $currentPass.blur( function () {
>           if ( $currentPass.attr("value") == "" ){
>               $currentPass.css({opacity:0});
>               $visiblePassword.css({opacity:1}).attr("value","Password");
>           }
>       });
>   });
>
> waseem sabjee wrote:
>
>> ah yes i forgot.
>>
>> you would get access denied when tried to change an input type property
>>
>> the best way is to have two input types and just hide one and show the
>> other
>>
>> but i have a solution for you
>> the html
>>
>>        <!-- The following html of two input types - we gonna switch
>> between them-->
>>        <input type="text" class="textinput" value="Passowrd" />
>>        <input type="password" class="passinput" value="" />
>>
>> the css
>>
>>        <style type="text/css">
>>            /*    first we need to hide the password input*/
>>            .passinput {
>>                display:none;
>>            }
>>        </style>
>>
>> the js
>>
>>        <script type="text/javascript">
>>            $(function() {
>>                // declare your input types
>>                var textinput = $(".textinput");
>>                var passinput = $(".passinput");
>>                // on text input focus - hide text input and show and focus
>> on password input
>>                textinput.focus() {
>>                    textinput.blur();
>>                    textinput.hide();
>>                    passinput.show();
>>                    passinput.focus();
>>                });
>>                // on password input blud hide password input and show and
>> focus on text input
>>                passinput.blur(function() {
>>                    passinput.blur();
>>                    passinput.hide();
>>                    textinput.show();
>>                    textinput.focus();
>>                });
>>            });
>>        </script>
>>
>> On Mon, Oct 19, 2009 at 2:51 PM, Marco Barbosa 
>> <marco.barbos...@gmail.com<mailto:
>> marco.barbos...@gmail.com>> wrote:
>>
>>
>>    Hi waseem!
>>
>>    Thanks for your reply.
>>
>>    Something's wrong with this line:
>>    $("#password").attr({type:'text'});
>>
>>    I tried changing to:
>>    $("#password").attr('type','text'});
>>
>>    but still no go.
>>    I have to comment out to get the other JS stuff on the site working.
>>
>>    The rest of the code seems Ok. What could it be?
>>
>>    I like your solution, pretty simple :)
>>
>>    I was wondering if we could put this inside the cleanField function
>>    but I guess it's not necessary.
>>
>>    ~Marco
>>
>>
>>    On Oct 19, 2:32 pm, waseem sabjee <waseemsab...@gmail.com
>>    <mailto:waseemsab...@gmail.com>> wrote:
>>    > // set the initial type to text
>>    > $(".mypasswordfield").attr({
>>    >   type:'text'
>>    >
>>    > });
>>    >
>>    > // on user focus - change type to password
>>    > $(".mypasswordfield").focus(function() {
>>    >  $(".mypasswordfield").attr({
>>    >    type:'password'
>>    >  });
>>    >
>>    > });
>>    >
>>    > // on user blur - change type to back to text
>>    > $(".mypasswordfield").blur(function() {
>>    >  $(".mypasswordfield").attr({
>>    >    type:'text'
>>    >  });
>>    >
>>    > });
>>    >
>>    > since text is an attribute we can change it.
>>    > all im doing is changing the type between password and text on
>>    click and on
>>    > blur
>>    > let me know if this worked for you :)
>>    >
>>    > On Mon, Oct 19, 2009 at 11:21 AM, Marco Barbosa
>>    > <marco.barbos...@gmail.com <mailto:marco.barbos...@gmail.com>>wrote:
>>
>>    >
>>    >
>>    >
>>    >
>>    >
>>    > > Hi!
>>    >
>>    > > I'm trying to achieve something like the Facebook first page (when
>>    > > you're not logged in).
>>    >
>>    > > I'm using this simple function/plugin to clean the fields once you
>>    > > click them:
>>    > > $.fn.cleanField = function() {
>>    > >        return this.focus(function() {
>>    > >                if( this.value == this.defaultValue ) {
>>    > >                        this.value = "";
>>    > >                }
>>    > >        }).blur(function() {
>>    > >                if( !this.value.length ) {
>>    > >                        this.value = this.defaultValue;
>>    > >                }
>>    > >        });
>>    > > };
>>    > > // clean the fields
>>    > > $("#login").cleanField();
>>    > > $("#password").cleanField();
>>    >
>>    > > So If I click Login or Password, it will clean and the user
>>    can type
>>    > > the new value.
>>    > > It works good but there's a little usability problem here.
>>    >
>>    > > I want to display the Password field like: "Your password here"
>>    > > instead of "***********"
>>    > > But when the user types his/her password, it has to go back to
>>    "****"
>>    >
>>    > > So Initially it should be: "Your login" "Your Password"
>>    > > And when the user clicks and starts typing it goes: "My login"
>>    > > "*******"
>>    >
>>    > > It's just the password field that masks the initial value by
>>    default.
>>    >
>>    > > If you check Facebook they managed to do that somehow.
>>    >
>>    > > Any ideas of how can I achieve this?
>>
>>
>>
>

Reply via email to