• Registrati
Benvenuto su codeinvaders.net la community italiana dedicata agli sviluppatori!
Puoi partecipare alle discussioni anche attraverso facebook, twitter e google+.
JS Day
  • google plus
  • facebook
  • twitter
Codeinvaders.net, domande e risposte per sviluppatori!
Partecipa a questa community rispettando tutti i suoi membri che, per il puro piacere di condividere, forniscono risposte e suggerimenti.
Classifica migliori utenti del mese 04/2017
  1. 4240 Punti

  2. 3980 Punti

  3. 3480 Punti

  4. Luca Rainone

    2400 Punti

I premi del mese
Posizione 1: Buono Amazon da 10 euro
Posizione 2: Sconto 40% su un libro O'Reilly

Phonegap campo number, comportamento focus e select, tab su device fisico samsung

Ciao a tutti, scusate ma sono novizio per il mobile:
Sto sviluppando con Eclipse/PhoneGap su ambiente Windows, sfrutto jquery mobile, effettuo test direttamente su device fisico Samsung Galaxy S2:

ho un campo di tipo number che consente anche i decimali in cui il valore di default è "0.00":

    <input
        type="number"
        name="QB_1_4_PossessoPercentuale"
        id="QB_1_4_PossessoPercentuale" 
        style="position:absolute;left:167px;top:47px;width:42px;height:8px;" 
        maxlength="6"
    >

sul focus del campo vorrei che si selezionasse l'intero contenuto, effettuo quindi nell' onDeviceReady():

$("input[type=number]").focus(
    function(){
        this.select();
    }
)

funziona correttamente, ...tranne utlizzando i tab "Prec." e "Succ." della tastiera.
Per i campi non decimali funziona correttamente sempre.
Effettuando il test con Ripple su Device Generic funziona correttamente sempre, anche con campo decimale.

Qualcuno ha mai avuto un problema simile? La presa del focus con tab può essere gestita con qualche evento particolare?
Ogni suggerimento è ben accetto

quesito posto 13 Dicembre 2012 in phonegap da anonimo
   

1 Risposta

0 voti

Non e' un bug relativo a PhoneGap ma un problema inerente webkit ritengo, ad ogni modo un possibile work around e' quello di utilizzare un time out.
Modificando l'handler come segue

$("input[type=number]").focus(app.delayed_focus);

ed aggiungendo la seguente funzione allo script dove viene definita l'app

   delayed_focus: function(){
        var input = $(this);
        setTimeout(function() { 
            input.select();
        },10);
    }

Puoi ottenere il comportamento desiderato.
Ho testato su Smsung Galaxy S3 e funziona correttamente.

risposta inviata 16 Dicembre 2012 da giorgio.natili (2,660 punti)
Non so se è la stessa cosa.. ho modificato il gestore di evento:

$("input[type=number]").focus(
        function(){
            var input = $(this);
            setTimeout(
                function() {
                    input.select();
                },10
            );
        }
);

ma non funziona, potrebbe anche essere legato al device..? stasera provo su differente device, in ogni caso, scusa ancora la domanda banale da inesperto... cosa intendi per "aggiungendo la seguente funzione allo script dove viene definita l'app"? ...io ho qualcosa del genere nel js principale:

window.addEventListener(
    'load'
    , function(){
           document.addEventListener("deviceready", onDeviceReady, false);
    }
    , false
);

...

function onDeviceReady() {

    ...

    $("input[type=number]").focus(
        function(){
            ...
        }
    );

...

}
  1. Mai scusarsi per le domande
  2. Mandami il tuo script che provo a fare le modifche necessarie.
Troppo buono! :-)

inviato su email...

Dalla riga 142 del file prova ad inserire queste righe di codice

 

$("input[type=number]").mouseup(
function(){
return false;
}
);
 
var delayed_focus = function(){
        var input = $(this);
        setTimeout(function() { 
            input.select();
        },10);
    };
 
    $("input[type=number]").focus(delayed_focus);
 
Non ho avuto tempo di fare una build ed un test, lo posso farre nel weekend..
 
:)
Niente da fare.. tra l'altro ho avuto modo di provare anche su un tablet mediacom, ed in questo caso il select() non funziona mai... a questo punto rinuncio "per il momento" ad una soluzione, vista la ludicità del progetto e visto che non è un errore bloccante, ma, per quanto antipatica, una semplice anomalia di utilizzo più friendly.
Puoi partecipare alle discussioni anche attraverso facebook e twitter.
...