Todella hieno ristiselkäinen tapa tehdä DefaultButtons -juttu - niin, että kun painat sisään, oikea painike "napsahtaa" (Suomi (Finnish))

Todella hieno ristiselkäinen tapa tehdä DefaultButtons -juttu - niin, että kun painat sisään, oikea painike "napsahtaa"

Wednesday, 24 March 2004

//

2 minute read

Tämä on yksi suurimmista UI-ongelmista, jotka johtuvat pääasiassa ASP.NETin "yhden muodon" säännöstä, koska Darrell On olemassa useita ratkaisuja, mutta mikään niistä ei ratkaise koko ongelmaa (eli kaikille selaimille), no nyt on olemassa loistava ratkaisu - Darrell Nortonin blogi (linkki): (Tehty uudelleen täällä, koska en löydä sitä enää koskaan...)

Lähetän oletusnappeja, kun käyttäjä painaa Enter-näppäintä - vihdoin!

Yksi vaikeimmista asioista verkkokehityksessä on tietyn painikkeen saaminen, jos sivulla on useampi kuin yksi painike. Metabuilderit Fame, on sellainen, joka toimii myöhäismallisille selaimille.

Julkiselle verkkokauppasivustolle asetettujen melko tiukkojen asiakasvaatimusten vuoksi tarvitsin jotain, joka meni kauemmas selainhistoriasta. Löysin koodinäytteen Janus Kampin Hansen se toimi vain IE:llä.

Laajennin sen toimimaan Mozillan ja Netscape 6+:n kanssa ja lisäsin siihen lisää koodia, jotta se toimisi useimpien Netscape 4+ -selainten kanssa. Sitten säädin suoritusta hieman, ja se on se! Nopea, helppokäyttöinen koodinvaimennin, jolla pakotetaan tiettyjä nappeja ampumaan kehittäjän määräämistä tekstilaatikoista.

Kopioi tämä menetelmä ensin helppopääsyiseen paikkaan:

julkinen tyhjiö SetDefaultButton (sivu, TextBox textControl, Button oletusButton)

{

  *// Sets default buttons.*

  *// Originally created by Janus Kamp Hansen - http://www.kamp-hansen.dk*

  *// Extended by Darrell Norton - http://dotnetjunkies.com/weblog/darrell.norton/* 

  *//   -- added Mozilla support, fixed a few issues, improved performance*

  *string theScript = @"*

<SKIPT-kieli="javascript">

Funktio fnTrapKD(btn, tapahtuma){

if (document.all) {

Suomennos: Michael T. Francis Pinmontagne SUBHEAVEN.ORG

event.returnValue=false;

Tapahtuma.cancel = totta;

btn.klikkaa();

}

}

Muu if (document.getElementById){

Jos (tapahtuma, joka koskee 13:a)

event.returnValue=false;

Tapahtuma.cancel = totta;

btn.klikkaa();

}

}

Muu if(document.layers){

Suomennos: Michael T. Francis Pinmontagne SUBHEAVEN.ORG

event.returnValue=false;

Tapahtuma.cancel = totta;

btn.klikkaa();

}

}

}

</SCRIPT>";

  *Page.RegisterStartupScript("ForceDefaultToScript", theScript);*

  *textControl.Attributes.Add("onkeydown", "fnTrapKD(" + defaultButton.ClientID + ",event)");*

}

Tämä koodi rekisteröi annetun skriptin sivulle. Sitten se lisää tekstilaatikkoon ominaisuuden, joka tässä tapauksessa on AvainDown -tapahtuma, joka kutsuu fnTrapKD-toimintoa painikkeella ClientID (se on HTML-tunnus renderöidyssä HTML-muodossa) ja tapahtuman. Minun piti siirtää tapahtuma, koska Netscape/Mozilla-selain voi napata tämänkaltaisen tapahtuman, jos et syötä sitä funktioon. IE pääsee tapahtumaan asiakirjaobjektista, mutta haluamme jotain mukavaa ja ristiselainta yhteensopivaa.

Dokumentti.Kaikki tiedot kattavat IE:n. Dokumentti.getElementById kattaa Netscape 6+- ja Mozilla-selaimet. Dokumentti.layers jos lausunto toimii Netscape 4+ -selaimella.

Lisää nyt rivi koodia, joka yhdistää jokaisen haluamasi tekstilaatikon tietyllä viestipainikkeella. Esimerkiksi:

  *SetDefaultButton(this, TextBox1, Button1);*

  *SetDefaultButton(this, TextBox2, Button2);*

  *SetDefaultButton(this, TextBox3, Button3);*

Yleensä laitan sen sivulle._Load, koska Page.RekisteröidyssäStartupScript-menetelmässä ei oteta huomioon kaksoisskriptejä. Nyt on vain soitettava SetDefault-nappiin jokaisesta tekstilaatikko-lähetä-nappiyhteydestä.

Olen testannut tätä laajasti vielä, ja osa JavaScriptista voi olla tarpeetonta. Ja ottaen huomioon Netscape 4 -versioiden määrän (ja niiden viallisuuden), se ei luultavasti toimi kaikissa niissä. Mutta se toimii (tällä hetkellä). Ja ainakin yrittää Netscape 4+ ja IE 5+ kattaa 99 prosenttia sivustoni selaimista.

Finding related posts...
logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.