# Molto bello tra croci - metodo di browser per fare la cosa 'DefaultButtons' - così che quando si schiaccia l'intrazione , il bottone corretto M'clicksM SK6

<datetime class="hidden">2004-03-24T00:00</datetime>

<!-- category -- mostlylucidcouk, Imported, ASP.NET, JavaScript, Web Development -->
Questo è uno dei più grandi problemi dell'interfaccia utente che è causato essenzialmente da ASP.NETM SK1s 'one formMSC3 rule , as [Darrell](http://dotnetjunkies.com/WebLog/darrell.norton/) indica che c'è una serie di soluzioni là fuori ma nessuna di queste risolve veramente il problema (iM SK2e., per tutti i browser ), bene ora ci sono SSK5 è una grande soluzione - da [Il blog di Darrell Norton](http://dotnetjunkies.com/WebLog/darrell.norton/) ([link](http://dotnetjunkies.com/WebLog/darrell.norton/archive/2004/03/03/8374.aspx)): ( viene riprodotto qui perché io non l'avrò mai più trovata altrimenti.

> ## [*I bottoncini predefiniti vengono trasmessi quando l'utente preme la tastiera Enter - infine!*](http://dotnetjunkies.com/WebLog/darrell.norton/archive/2004/03/03/8374.aspx)
> 
> *Una delle cose più difficili nello sviluppo del web è ottenere un certo bottone per essere inviato se avete più di un bottone sulla pagina.* [*I Metabuilder*](http://www.metabuilders.com/) *Fama, ce n'è uno che funziona per i browser più tardi-model browsersM SK2*
> 
> *A causa delle stringente richieste dei clienti per un sito pubblico di e-commerce-, ho avuto bisogno di qualcosa che andasse più indietro nella storia del browserM SK2 Ho trovato un campione di codice da* [*Janus Kamp Hansen*](http://www.kamp-hansen.dk/pages/showdoc.asp?id=28&menuid=21&menuid=18) *che funzionava solo per IE.*
> 
> *L'ho esteso per lavorare con Mozilla e Netscape 6+, poi ho aggiunto un po' di codice per farlo funzionare con la maggior parte dei browser di netscape ♫4+ . Poi ho modificato un pochino la performance ♫ , e quella ♫*
> 
> *Primo, copiare questo metodo in un luogo facilmente accessibile:*
> 
> *vuoto pubblico SetDefaultButton(Page pageM SK1 TextBox textControl, Button defaultButton≥)*
> 
> *{*
> 
>       *// 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 = @"*
> 
> *&lt;La lingua SCRIPT=""javascript""&gt;*
> 
> *Funzione fnTrapKD(btnM SK1 evento){*
> 
> *se (documentoM SK1tutto){*
> 
> *se (eventM SK1keyCode == 13){*
> 
> *evento.Value di ritornoM SK1falso;*
> 
> *evento. cancellare = veroM SK2*
> 
> *btn.click();*
> 
> *}*
> 
> *}*
> 
> *Altrimenti se (documentM SK1getElementById){*
> 
> *Se (eventM SK1Quale == 13){*
> 
> *evento.Value di ritornoM SK1falso;*
> 
> *evento. cancellare = veroM SK2*
> 
> *btn.click();*
> 
> *}*
> 
> *}*
> 
> *Altrimenti se(documentM SK1layers){*
> 
> *Se(eventM SK1Quale == 13){*
> 
> *evento.Value di ritornoM SK1falso;*
> 
> *evento. cancellare = veroM SK2*
> 
> *btn.click();*
> 
> *}*
> 
> *}*
> 
> *}*
> 
> *&lt;/SCRIPT&gt;";*
> 
>       *Page.RegisterStartupScript("ForceDefaultToScript", theScript);*
>     
>       *textControl.Attributes.Add("onkeydown", "fnTrapKD(" + defaultButton.ClientID + ",event)");*
> 
> *}*
> 
> *Questo codice registra lo script dato con la pagina. Poi aggiunge un attributo alla scatola di testoM SK1 che in questo caso è un evento onKeyDown che chiama la funzione fnTrapKD con il bottone’s clientID MST3itMSSK4s HTML ID nel rendered HTML ) e l'eventoMSC6 Ho dovuto trasferire l'event perché i browser NetscapeMSL7Mozilla non possono catturare questo tipo d'evento a meno che non lo si passa alla funzioneMS. IE può accedere all'evento dall'oggetto del documentoMSV10 ma vogliamo qualcosa di bello e trasversaleMSP11compatibile con i browserMSS12*
> 
> *Il document.all se l'affermazione copre IE. Il document~.getElementById copre Netscape M SK3 e i browser Mozilla . Il documentoMSC5se l'addizione funziona con Netscape.*
> 
> *Ora aggiungete una linea di codice collegando ogni scatola di testo che volete ad un certo bottone di consegna. Per esempio:*
> 
>       *SetDefaultButton(this, TextBox1, Button1);*
>     
>       *SetDefaultButton(this, TextBox2, Button2);*
>     
>       *SetDefaultButton(this, TextBox3, Button3);*
> 
> *Di solito lo metto sulla pagina.\_Load, dal momento che il metodo PageM SK2RegisterStartupScript ignorerà gli schemi duplicati . Ora è semplicemente una questione di chiamare SetDefaultButton per ogni scatola di testo*
> 
> *Non l'ho ancora testato in modo approfondito, e alcuni dei JavaScript potrebbero non essere necessari. E considerando il numero di versioni di Netscape M SK3 ( e la loro instabilitàMSC5 probabilmente ’ non funziona su tutte queste versioniMST7 Ma funziona MST8 per oraM ST9 E almeno facendo un tentativo a Netscape, SST10 e IE MSST11 coprerà SST12 del mio sito ESST13 i browser web ESST14*