2012-08-10 13 views
39

Sto sviluppando un'applicazione di mobile banking e sono interessato a formattare gli input di valuta in tempo reale.Posizione di inserimento JavaScript

Ho già testato autoNumeric plugin e jQuery Format Currency Plugin ma entrambi hanno problemi di posizione del cursore su Android 2. * browser.

Qualcuno ha una soluzione JavaScript compatibile con questo browser?

+1

Dopo aver lottato con le maschere numeriche, ho dovuto disabilitarli (e altri) per i browser mobili. Per quanto ne so, non ci sono soluzioni alternative. – devundef

+0

Questa versione del browser Android non supporta correttamente 'obj.selectionStart' e' obj.selectionEnd'? – scunliffe

+1

Se stai già utilizzando jQuery, hai provato jQuery ++ (l'ho usato di recente per posizionare correttamente la posizione del cursore dopo aver acquisito la scheda e premuto i tasti)? Funziona alla grande quando l'ho provato. Indipendentemente da ciò, puoi sempre usare i loro metodi Range e Selection (senza bisogno di jQuery). jquerypp.com –

risposta

1

Non so autoNumerico, ma http://code.google.com/p/jquery-formatcurrency/ sembra piuttosto buono. L'esempio di jsFiddle che hai pubblicato non inserisce correttamente il punto di inserimento nel browser desktop, ma lo fa e anche sul mio telefono Android (Jellybean). (Su Gingerbread, la barra cursore lampeggiante può saltare alla fine della linea, ma sarà comunque la modifica di cui l'ultima era.) Provate il loro demo: http://www.bendewey.com/code/formatcurrency/demo/format_as_you_type.html

+0

Questo plugin ha anche problemi di posizione del cursore su Andoid 2. * browser. –

-1

Sembra questo plugin jQuery - NumBox - ha lo scopo di fornire una soluzione al tuo problema

+0

Questo plugin aggiorna solo l'input su sfocatura, mi interessa una soluzione che aggiorni il valore in tempo reale –

1

Io di solito uso accounting.js È possibile scaricarlo da http://openexchangerates.github.io/accounting.js/#download

E 'abbastanza facile da usare. Puoi vedere come funziona dalla stessa pagina di download.

ho creato un paio di funzioni javascript che io uso per fare la gestione del cursore:

 function formatMoney(myField){ 
      if(myField.selectionStart || myField.selectionStart == '0'){ 
       var len = myField.value.length; 
       var caretPos = doGetCaretPosition(myField); 
       myField.value = accounting.formatMoney(myField.value); 
       var newlen = myField.value.length; 
       setCaretPosition(myField, newlen != len ? (newlen > len ? caretPos + 1 : caretPos - 1) : caretPos); 
      } 
     } 
     function doGetCaretPosition (ctrl) { 

      var CaretPos = 0; 
      // IE Support 
      if (document.selection) { 

       ctrl.focus(); 
       var Sel = document.selection.createRange(); 

       Sel.moveStart ('character', -ctrl.value.length); 

       CaretPos = Sel.text.length; 
      } 
      // Firefox support 
      else if (ctrl.selectionStart || ctrl.selectionStart == '0') 
       CaretPos = ctrl.selectionStart; 

      return (CaretPos); 

     } 
     function setCaretPosition(elem, caretPos) { 
      elem.value = elem.value; 
      if(elem != null) { 
       if(elem.createTextRange) { 
        var range = elem.createTextRange(); 
        range.move('character', caretPos); 
        range.select(); 
       } 
       else { 
        if(elem.selectionStart) { 
         elem.focus(); 
         elem.setSelectionRange(caretPos, caretPos); 
        } 
        else 
         elem.focus(); 
       } 
      } 
     } 

È possibile utilizzare le funzioni con il campo di testo come:

<input id="myField" type="text" onkeyup="formatMoney(this);" onChange="formatMoney(this);" onBlur="formatMoney(this);" /> 

Il recupero e il cursore di impostazione le funzioni di posizione sono state ottenute da qui: Set keyboard caret position in html textbox

L'ho provato su emulatore Android 2.1. Anche se l'emulatore era lento ma sembrava funzionare. Potete trovare lo screenshot qui: https://www.dropbox.com/s/9ximuwh64kadiea/shot.JPG?dl=0

+0

Ho provato questa soluzione su un dispositivo Android 2.3.6 e sfortunatamente i problemi di posizione del cursore rimangono. –

0

Ecco un open source, così contribuito, biblioteca ben Commited: https://github.com/plentz/jquery-maskmoney

Sembra risponde il vostro bisogno, non è vero? Non è stato testato su Android.

+0

Purtroppo sembra che ci siano alcuni problemi di Android: https://github.com/plentz/jquery-maskmoney/issues?utf8=%E2%9C%93&q=android –

+1

My bad. Controllerà i problemi la prossima volta. –

Problemi correlati