views:

102

answers:

0

Strange bug I'm getting. I have a login form that is hidden by default, once a user clicks on an observed element, the element containing the form slides down (using Effect.BlidnDown in Scriptaculous)

Here is the function, which is part of the 'Interface' object:

revealLoginForm: function() {
    $('a_login').blur();
    if (!$('hform').visible()) {
        Effect.BlindDown('hform', {
            duration: 0.4,
            afterFinish: function() {
                $('f_login').focusFirstElement();
            }
        });
    } else {
        $('f_login').focusFirstElement();
    }
},

The event observation:

 Event.observe('a_login', 'click', Interface.revealLoginForm);

And the HTML:

<a id='a_login' href='javascript:void(0);'>Login to My Account</a>
....
<div id='hform' style='display:none;'>
<form id='f_login' action='...' method='post' name='sidelogin'>
<table cellspacing='0' class='login'>
<tr>
<th>Login ID:</th><td><input style='padding:2px;' type='text' size='18' name='enc_loginname' /></td>
</tr>
<tr>
<th>Password:</th><td><input style='padding:2px;' type='password' size='18' name='enc_password' /></td>
</tr>
<tr>
<th></th><td><input type='submit' class='submit' value='Login &raquo;' /></td>
</tr>
</table>
</form>
</div>

If I disable the $('f_login').focusFirstElement(); command in revealLoginForm(), the form does not disappear. What's strange is, the other call to this function does not adversely affect the element, it only seems to happen when called within the afterFinish callback to the Effect.BlindDown function.

Any ideas? It would be nice to have the first element of this form selected once the form has appeared. This works fine in Firefox.. it's just IE (Im using IE7) that's causing problems (go figure...)