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
Questo è uno dei più grandi problemi dell'interfaccia utente che è causato essenzialmente da ASP.NETM SK1s 'one formMSC3 rule , as Darrell 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 (link): ( 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!
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 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 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 = @"*<La lingua SCRIPT=javascript>
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();
}
}
}
</SCRIPT>";
*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