Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[JS/ASP.Net] button disablen

Pagina: 1
Acties:

  • creator1988
  • Registratie: Januari 2007
  • Laatst online: 29-11 10:10
Ik heb deze functie gemaakt

code:
1
2
3
4
5
6
7
8
    <script type="text/javascript">
        function disbutton(e, tekst)
        {
        document.getElementById(e).disabled=true;
        document.getElementById(e).value = tekst;
        __doPostBack(e,'');
        }
    </script>


en vervolgens
code:
1
button1.attributes.add("onclick", "disbutton('" & button1.clientid & "', 'Verwerken...');")


Maar het werkt niet, ik krijg een javascript fout.

Als ik in plaats van e, in mijn functie de naam van button1.clientid uitschrijf (ctl00$Contentplaceholder1$Button1) werkt het wel.

//edit: de js staat in de head van de masterpage

[ Voor 4% gewijzigd door creator1988 op 22-12-2007 13:11 ]


Verwijderd

gebruik gewoon this om een referentie naar je knop mee te geven

  • creator1988
  • Registratie: Januari 2007
  • Laatst online: 29-11 10:10
Verwijderd schreef op zaterdag 22 december 2007 @ 13:15:
gebruik gewoon this om een referentie naar je knop mee te geven
dan kan ik toch niet de clientid te weten komen? En die is nodig voor de postback.


//edit: problem solved. button1.clientid geeft de naam van de button met underscores, terwijl de postback dollar tekens wil zien. button1.clientid.replace("_", "$") lost het probleem op.

[ Voor 26% gewijzigd door creator1988 op 22-12-2007 13:33 ]


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 27-11 10:50

_Thanatos_

Ja, en kaal

dan kan ik toch niet de clientid te weten komen? En die is nodig voor de postback.
Dat is dan this.id

日本!🎌


  • Mephix
  • Registratie: Augustus 2001
  • Laatst online: 25-11 20:41
Inderdaad lekker schoon houden en geen aparte functies maken als die niet nodig zijn. En als ze al nodig zijn.. maak dan een nieuw webcontrol, inherit van de standaard button en plak wat javascript met page.clientscript.registerclientscriptblock in de onprerender.

code:
1
button1.attributes.add("onclick", "this.value = 'Verwerken...'; this.disabled = true; __doPostBack(this.id, '');");


Wat ik zelf meestal nog doe is een class bouwen die inherit van de system.web.ui.page (of masterpage), als baseclass voor al mn pages en daarin (onder andere) de GetPostBackEventReference aanroepen op de Page zelf.

Je weet dan 100% zeker dat de __doPostBack functie gegenereerd wordt Dit gebeurd namelijk niet als bijvoorbeeld geen enkele control verder een autopostback=true heeft. Als je een webcontrol maakt kan dat daar natuurlijk ook in.

[ Voor 17% gewijzigd door Mephix op 23-12-2007 17:50 ]