59 messaggi dal 17 maggio 2010
Dimenticavo:
se vuoi capire quando usare l'uno o l'altro metodo, potresti pensare ad un esempio di autocompletamento. Ad esempio aggiungendo all'esempio di prima, nel input "query" al onkeyup un autocompletamento:
<asp:TextBox ID="query" onkeyup="javascript:GetNames();return false;" runat="server"></asp:TextBox>

sovrascrivi la funzione success con questa:
var lastLengthDGT = 0;
         //uso questa variabile per limitare le chiamate in caso di veloce digitazione
         var lock = false;
         function OnSuccess(response) {
             //controllo se la funzione è bloccata su un altra chiamata
             if (lock)
                 return;
             //blocco le chiamate alla funzione (in caso di digitazione veloce)
             lock = true;
             //ripristino le chiamate dopo 400 ms 
             setTimeout(function () { lock = false; }, 400);
             //recupero l'input "query"
             var input = document.getElementById('<%=query.ClientID%>');
             //recupero il valore del campo
             var queryValue = input.value;
             //controllo se effettivamente è cambiata la stringa di valutazione
             if (lastLengthDGT == queryValue.length)
                 return;
             lastLengthDGT = queryValue.length;
             //cancello le vecchie option
             $('#<%=ListBox1.ClientID%>').empty();
             var first = true;
             //itero gli elementi restituiti
             $.each(response.d, function (index, item) {
                 //aggiungo option con il valore dell'elemento
                 $('#<%=ListBox1.ClientID%>').append('<option value="' + index + '">' + item + '</option>');
                 //se la query inizia come l'item attuale
                 if (item.indexOf(queryValue) == 0) {
                     input.focus();
                     //imposto il valore dell'item nel campo di autocompletamento (query)
                     input.value = item;
                     //seleziono il testo in eccedenza tra quelo digitato e quello "autocompletato"
                     //in modo che alla successiva digitazione il selezionato scompaia
                     input.setSelectionRange(lastLengthDGT, item.length);
                 }
             });

ottieni un autocompletamento che lavora con ogni tasto digitato, e completa la parola con la prima restituita dal webMethod facendo in modo che l'eccedenza della parola rispetto al digitato sia testo selezionato.
Immagina di dover fare lo stesso con un postback...
Modificato da u235 il 12 novembre 2016 18.46 -
944 messaggi dal 11 febbraio 2013
Ancora grazie...ho imparato una cosa nuova

buon lavoro

a presto

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.