[ASP.Net 2.0] OnClientClick

Pagina: 1
Acties:
  • 127 views sinds 30-01-2008
  • Reageer

  • PolarBear
  • Registratie: Februari 2001
  • Niet online
Algemeen:
Login pagina.
Werkt onder .Net 1.0.
Gebruiker typt gebruikersnaam en wachtwoord, deze wordt via een javascriptje gehasht (met een random string). Daarna postback en verdere afhandeling.

Nieuwe technieken:
In ASP.Net 2.0 kan je gebruik maken van de zogenaamde clientclick handler bij buttons.
Meer info:
http://weblogs.asp.net/sk...ve/2004/10/24/246980.aspx

Relevante code:
Aspx pagina (voorzover van belang)
Visual Basic:
1
2
3
4
5
6
7
<head runat="server">
       (...)
       <script language="javascript" src="ext/sha1.js"></script>
</head>
(...)
<asp:Button ID="btnOk" Runat="server" Text="Ok" OnClientClick="hash()"
                EnableViewState="False" OnClick="btnOk_Click1"/>


JS file (voorzover van belang)
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
function hash()
{   
    var temp;
    var temp1;

    document.getElementById("btnOk").disabled='true';   
    temp1 = hex_sha1(document.getElementById("txtPass").value);
    temp1 = temp1.toUpperCase();    
    document.getElementById("txtPass").value = "";
    temp = document.getElementById("txtRandom").value + temp1;
    document.getElementById("txtPassHash").value = hex_sha1(temp);  
} 


Probleem:
Er wordt geen postback gedaan. Zonder de bovenstaande code, dus zonder clientclick doet hij het wel. Ook met de clientclick "alert ("This is a Javascript Alert")" werkt het wel ...

Ik zal wel de bloody obvious over het hoofd zien, maar het werkt niet :(

[ Voor 23% gewijzigd door PolarBear op 12-04-2005 14:34 ]


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 08-05 11:55

mulder

ik spuug op het trottoir

Volgens mij behoort ie ook geen postback te doen? Als dat wel zou moeten misschien de functie true laten returnen? Of de postback zelf doen.

oogjes open, snaveltjes dicht


  • PolarBear
  • Registratie: Februari 2001
  • Niet online
Hij hoort juist wel een postback te doen. Tenminste ...

Het is overigen onclientclick ... zie ook http://msdn2.microsoft.com/library/48zx42tc.aspx.

En:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<%@ page language="VB"%>
<script runat="server">
  
  Sub LinkButton1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
    Label1.Text = "Thank you for visiting our site."
  End Sub
  
</script>
<html>
<head id="Head1" runat="server">
    <title>LinkButton.OnClientClick Example</title>
</head>
<body>
  <form id="form1" runat="server">
    
    <h3>LinkButton.OnClientClick Example</h3> 
     
      <br />
      
      <h4>Click to navigate to Microsoft.com:</h4>     
      
      <br />
        
      <asp:linkbutton id="LinkButton1"
       text="Open Web site"
       onclientclick="Navigate()"
       onclick="LinkButton1_Click"
       runat=Server />
       
       <br /><br />
       
      <asp:label id="Label1"
        runat=Server>
      </asp:label>

    </form>
    
    <script language=javascript>
      function Navigate()
      {
        javascript:window.open("http://www.microsoft.com");
      }    
      
    </script>
</body>
</html>

[ Voor 77% gewijzigd door PolarBear op 12-04-2005 14:45 ]


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
treed er mischien een excpetion op in je javascript gedeelte. Het zou kunnen dat daardoor de postback niet uitgevoerd wordt.

Mischien anders inderdaad true returnen met je functie. In asp.net 1.1 ( en 1.0 ) kon je zelf ook een clientclick doen door serverside hetvolgende te doen

C#:
1
myButton.Attributes[ "OnClick" ] = "MyJavascriptFunction()";


als MyJavascriptFunction() hier false returnt dan wordt de OnClick ook niet verder uitgevoerd en dus krijg je geen postback. Ik ga ervanuit dat de OnClientClick in asp.net 2.0 hetzelfde werkt.

Probeer anders eens met de debugger door je javascript te lopen en kijk of het allemaal werkt.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • PolarBear
  • Registratie: Februari 2001
  • Niet online
Ik ben bekend met de ASP.Net 1.x manier. Maar dit zou ook moeten werken (zie ook het MSDN voorbeeld in mijn vorige post).

Javascript geeft geen errors (gecheckt in IE en Firefox).

Een return true lijkt ook niet te helpen.

Ik ga eens verder kijken ... ik word hier moe van :(

  • PolarBear
  • Registratie: Februari 2001
  • Niet online
Hmmm het probleem ligt in
JavaScript:
1
    document.getElementById("btnOk").disabled='true';    

Terwijl dit in ASP.Net 1.x wel werkte... :?

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
PolarBear schreef op dinsdag 12 april 2005 @ 14:52:
Hmmm het probleem ligt in
JavaScript:
1
    document.getElementById("btnOk").disabled='true';    

Terwijl dit in ASP.Net 1.x wel werkte... :?
Dat lijkt me sterk. Dit heeft namelijk niks met asp.net te maken maar alleen met javascript. Als je op de server een andere versie van ASP.NET draait verandert dat natuurlijk niks aan de uitvoer van je javascript. Zou het niet moeten zijn.

JavaScript:
1
    document.getElementById("btnOk").disabled=true;    

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • PolarBear
  • Registratie: Februari 2001
  • Niet online
rwb schreef op dinsdag 12 april 2005 @ 15:01:
[...]

Dat lijkt me sterk. Dit heeft namelijk niks met asp.net te maken maar alleen met javascript. Als je op de server een andere versie van ASP.NET draait verandert dat natuurlijk niks aan de uitvoer van je javascript. Zou het niet moeten zijn.

JavaScript:
1
    document.getElementById("btnOk").disabled=true;    
Daarom heb ik er ook een hele ochtend over gedaan. Maar het werkt nu wel. Overigens maakt het niet uit of ik:
JavaScript:
1
    document.getElementById("btnOk").disabled=true;    

of
JavaScript:
1
    document.getElementById("btnOk").disabled='true';    

gebruik..

Erg vaag ...


Tracht het maar te reproduceren (vooral in IE is het duidelijk)
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<script runat="server">

    Sub Button_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Response.Write("You have clicked")
    End Sub
    
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
    <script language ="javascript" >
    function disableButton()
    {
    document.getElementById("Button").disabled=true;
    }    
    </script>      
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="Button" Runat="server" Text="Button" OnClientClick="disableButton()"
            OnClick="Button_Click" />
    
    </div>
    </form>
</body>
</html>

[ Voor 41% gewijzigd door PolarBear op 12-04-2005 15:16 ]

Pagina: 1