Avatar billede speedpete Nybegynder
16. november 2005 - 14:04 Der er 42 kommentarer og
1 løsning

asp:Login (.NET 2.0) og Enter-tasten

Vedr. <asp:Login>:

Jeg bruger 2.0's indbyggede Login-faciliteter, og vil gerne have at Login-knappen aktiveres når man trykker på Enter-tasten på sit tastatur.
Avatar billede the_party_dog Nybegynder
16. november 2005 - 14:07 #1
Lig den her funktion ind i din CS fil, og kald den SetDefaultButton(this.Page, TXTNAVN, BTNNAVN) i din pageload..

public void SetDefaultButton(Page page, TextBox textControl, Button defaultButton)
        {
            // Sets default buttons.
            // Originally created by Janus Kamp Hansen -
            // http://www.kamp-hansen.dk/pages/showdoc.asp?id=28&menuid=21&menuid=20
            // Extended by Darrell Norton - http://dotnetjunkies.com/weblog/darrell.norton/ -
            // http://dotnetjunkies.com/WebLog/darrell.norton/archive/2004/03/03/8374.aspx
            //  -- added Mozilla support, fixed a few issues, improved performance
            //        <!--
            string theScript = @"
<SCRIPT language=""javascript"">

       

                function fnTrapKD(btn, event)
                {

                    if (document.all)
                    {
                        if (event.keyCode == 13)
                        {
                            event.returnValue=false;
                            event.cancel = true;
                            btn.click();
                        }
                    }
                    else if (document.getElementById)
                    {
                        if (event.which == 13)
                        {
                            event.returnValue=false;
                            event.cancel = true;
                            btn.click();
                        }
                    }
                    else if(document.layers)
                    {
                        if(event.which == 13)
                        {
                            event.returnValue=false;
                            event.cancel = true;
                            btn.click();
                        }
                    }
                }
</SCRIPT>";

            Page.RegisterStartupScript("ForceDefaultToScript", theScript);
       
            textControl.Attributes.Add("onkeydown", "fnTrapKD(" + defaultButton.ClientID + ",event)");
       
        }
Avatar billede dr_chaos Nybegynder
16. november 2005 - 14:11 #2
scriptet bør ikke være nødvendigt.
Jeg har en asp:login kontrol og der aktiveres login button automatisk med et tryk på enter.
Avatar billede the_party_dog Nybegynder
16. november 2005 - 14:14 #3
Sagde heller ikke dette var den perfekte løsning. Han kunne måske prøve den, hvis intet andet virker... :)
Avatar billede speedpete Nybegynder
16. november 2005 - 14:14 #4
dr chaos: Hvilken browser bruger du?
Avatar billede dr_chaos Nybegynder
16. november 2005 - 14:16 #5
jeg har testet de i IE og mozilla.
Avatar billede dr_chaos Nybegynder
16. november 2005 - 14:17 #6
Avatar billede speedpete Nybegynder
16. november 2005 - 14:18 #7
dr chaos: Søreme... hvordan har du gjort? Noget kode?
Avatar billede dr_chaos Nybegynder
16. november 2005 - 14:20 #8
<!--login kontrol-->
        <asp:Login ID="Login2"  PasswordRecoveryUrl="~/GlemtPassword.aspx" PasswordRecoveryText="Glemt password"  runat="server" VisibleWhenLoggedIn="true"  OnLoggedIn="Login2_OnLoggedIn" PasswordLabelText="Password" LoginButtonStyle-CssClass="smallButton" PasswordRequiredErrorMessage="Du skal indtaste et password" UserNameRequiredErrorMessage="Du skal indtaste et brugernavn" UserNameLabelText="BrugerNavn" DisplayRememberMe="False" LoginButtonText="Log ind" FailureText="Brugernavn eller password er forkert prøv igen" TitleText="">
        </asp:Login>
Avatar billede dr_chaos Nybegynder
16. november 2005 - 14:21 #9
det er alt hvad jeg har.
Det er bundet op med en membershipprovider. Så der er faktisk ikke mere kode end det.
jeg har selv lavet member shipprovideren.
Avatar billede speedpete Nybegynder
16. november 2005 - 14:28 #10
Okay, jeg ved hvorfor... der er ingen problemer, når der KUN er en Login-kontrol, men hvis der er flere knapper på siden?
Avatar billede speedpete Nybegynder
16. november 2005 - 14:29 #11
Næhhh... det var ikke det...
Avatar billede dr_chaos Nybegynder
16. november 2005 - 14:30 #12
ok hvorfor virkede dit ikke ?
Avatar billede speedpete Nybegynder
16. november 2005 - 14:32 #13
Jamen, det ved jeg ikke.... Jeg har ingen problemer med en simpel Login og en enkelt knap, men på det site jeg laver, har jeg en masse imagelinks og menuer, og min Login ligger inden i en Content. Måske har det noget med det at gøre...
Avatar billede dr_chaos Nybegynder
16. november 2005 - 14:34 #14
i en contentplaceholder ?
Avatar billede speedpete Nybegynder
16. november 2005 - 14:37 #15
ja, og derudover ligger min Login inden i en LoginView
Avatar billede dr_chaos Nybegynder
16. november 2005 - 14:39 #16
jeg har ikke arbejdet med et loginview.
Men min login control ligger også i en contentplaceholder.
Avatar billede speedpete Nybegynder
16. november 2005 - 14:46 #17
Tja, det er ikke til at vide. Jeg må nok forsøge mig med festhundens løsning
Avatar billede dr_chaos Nybegynder
16. november 2005 - 14:51 #18
når jeg smider min login control i et loginview virker det stadigvæk.
Avatar billede speedpete Nybegynder
16. november 2005 - 14:56 #19
Ja, også her, så længe jeg prøver på en frisk side. Men når jeg copy-paster det ind i mit site, så går det i udu....
Avatar billede dr_chaos Nybegynder
16. november 2005 - 14:57 #20
så prøv at kopierer den anden siden ind på den som virker.
Avatar billede speedpete Nybegynder
16. november 2005 - 15:04 #21
Ja, så virker det også fint, så det må have noget at gøre med det miljø, den kører i.
Avatar billede dr_chaos Nybegynder
16. november 2005 - 15:05 #22
muligvis kører du med beta 2 eller final ?
Avatar billede speedpete Nybegynder
16. november 2005 - 15:11 #23
beta 2
Avatar billede dr_chaos Nybegynder
16. november 2005 - 15:13 #24
det er muligt at du er støt på en bug. Bruger selv den final version.
Avatar billede speedpete Nybegynder
16. november 2005 - 15:14 #25
Hvor finder du final version?
Avatar billede speedpete Nybegynder
16. november 2005 - 15:19 #27
Næææhh! hvornår er den kommet? Ved du om det er den endelige? Hvornår kommer Visual Studio 2005?
Avatar billede dr_chaos Nybegynder
16. november 2005 - 15:23 #28
det er den endelige version og vs.net 2005 som jeg bruger kom 27/10 for msdn subscribers.
Jeg tror det er mere alment tilgængeligt nu.
Avatar billede dr_chaos Nybegynder
16. november 2005 - 15:34 #29
så man kan købe den på diverse sites.
Avatar billede speedpete Nybegynder
16. november 2005 - 17:49 #30
Ok, jeg troede den kun var lige på trapperne. Tak.
Avatar billede dr_chaos Nybegynder
16. november 2005 - 17:56 #31
np
Avatar billede speedpete Nybegynder
17. november 2005 - 11:29 #32
Nå, nu har jeg så fået Final Version op at køre, men det løser ikke problemet med Enter-tasten.
Er du forøvrigt stødt på problemer med at referere til kontrollerne inden i LoginView? FindControl() virker ikke, fordi der er templates involveret.

Jeg tænker på om man kan sætte noget JavaScript op, som bruger LoginButton'ens renderede HTML:

<input type="submit" name="ctl00$ContentPlaceHolder1$LoginView1$Login1$LoginButton" value="Log ind" onclick="java script:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$ContentPlaceHolder1$LoginView1$Login1$LoginButton&quot;, &quot;&quot;, true, &quot;Login1&quot;, &quot;&quot;, false, false))" id="ctl00_ContentPlaceHolder1_LoginView1_Login1_LoginButton" tabindex="1" />

Måske kunne man lave noget med hvis keyCode==13 så kaldes det samme som der står i HTML'en ved onclick?
Avatar billede dr_chaos Nybegynder
17. november 2005 - 12:22 #33
hvis du fik det til at virke på en test version hvorfor bruger du så ikke den ?
Avatar billede speedpete Nybegynder
17. november 2005 - 12:42 #34
Jeg fik det ikke til at virke... Jeg tog den login, som ikke virkede, og kopierede over i en ren side, hvor den så virkede. Så pointen er, at der må være noget med det miljø, den er indsat i.
Avatar billede dr_chaos Nybegynder
17. november 2005 - 12:45 #35
kan du ikke bare bruge den rene side ?
Avatar billede speedpete Nybegynder
17. november 2005 - 12:46 #36
Nej, for jeg har login placeret på forsiden: http://dotnet242.combell.net (Her er der OVERHOVEDET intet der virker, men det er serverens skyld. Der er ingen database under).
Avatar billede dr_chaos Nybegynder
18. november 2005 - 14:47 #37
jeg kan godt bruge enter key på  http://dotnet242.combell.net.
Avatar billede speedpete Nybegynder
18. november 2005 - 17:24 #38
Så er det måske noget med serveren? Jeg kan godt se, at den validerer felterne, når man trykker Enter...
Avatar billede dr_chaos Nybegynder
19. november 2005 - 09:59 #39
det kan godt være noget med serveren.
Det virker dog lidt mærkeligt.
Avatar billede dr_chaos Nybegynder
19. november 2005 - 10:00 #40
prøv at se om du kan finde ud af hvor postback eventet ryger hen når man trykker på enter.
Avatar billede speedpete Nybegynder
19. november 2005 - 13:12 #41
Det er ikke serveren: Jeg observerer samme adfærd på min egen maskine: Hvis man stiller cursoren i enten brugernavn eller password, UDEN at udfylder dem med tekst, så validerer den felterne når man trykker Enter, men hvis man udfylder felterne med tekst, og trykker Enter, så sletter den bare passwordet (Jeg gætter på at den reloader siden, fordi jeg har en "Til forsiden"-knap øvers på siden).

Jeg har ikke megen ide om, hvordan man finder ud af, hvor eventet bliver af
Avatar billede dr_chaos Nybegynder
04. februar 2006 - 16:52 #42
Du mangler at lukke spørgsmålet.
Avatar billede speedpete Nybegynder
05. februar 2006 - 13:19 #43
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester