2012-08-10 24 views
39

Estoy desarrollando una aplicación de banca móvil y estoy interesado en formatear las entradas de cantidad de moneda en tiempo real.JavaScript caret position

Ya he probado autoNumeric plugin y jQuery Format Currency Plugin pero ambos tienen problemas de posición del cursor en Android 2. * navegadores.

¿Alguien tiene una solución de JavaScript compatible con estos navegadores?

+1

Después de luchar con máscaras numéricas, tuve que deshabilitarlas (y otras) para navegadores móviles. Por lo que sé, no hay soluciones temporales. – devundef

+0

¿Esta versión del navegador Android no admite 'obj.selectionStart' y' obj.selectionEnd' correctamente? – scunliffe

+1

Si ya está usando jQuery, ¿ha probado jQuery ++ (lo utilicé recientemente para la ubicación correcta de la posición de intercalación después de capturar la pestaña e ingresar las teclas presionadas)? Funciona muy bien cuando lo probé. De todos modos, siempre puedes usar sus métodos de Rango y Selección (sin necesidad de jQuery). jquerypp.com –

Respuesta

1

No sé acerca de autoNumeric, pero http://code.google.com/p/jquery-formatcurrency/ se ve bastante bien. El ejemplo de jsFiddle que publicó no coloca el símbolo de intercalación correctamente en mi navegador de escritorio, pero sí, y en mi teléfono Android (Jellybean) también. (El pan de jengibre, la barra cursor parpadeante puede saltar al final de la línea, pero todavía será la edición en la que la última era.) Prueba la demo: http://www.bendewey.com/code/formatcurrency/demo/format_as_you_type.html

+0

Este plugin también tiene problemas de posición del cursor en los navegadores Andoid 2. * –

-1

Parece que este plugin jQuery - NumBox - tiene como objetivo proporcionar una solución a tu problema

+0

Este plugin solo actualiza la entrada en blur, me interesa una solución que actualice el valor en tiempo real. –

1

lo general el uso accounting.js Puede descargarlo desde http://openexchangerates.github.io/accounting.js/#download

Es muy fácil de usar. Puedes ver cómo funciona desde la misma página de descarga.

he creado un par de funciones javascript que utilizo para hacer el manejo del cursor:

 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(); 
       } 
      } 
     } 

Puede utilizar las funciones con el campo de texto como:

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

La obtención y el símbolo de intercalación entorno las funciones de posición se obtuvieron desde aquí: Set keyboard caret position in html textbox

Lo probé con el emulador de Android 2.1. Aunque el emulador era lento, pero parecía estar funcionando. Puede encontrar la captura de pantalla aquí: https://www.dropbox.com/s/9ximuwh64kadiea/shot.JPG?dl=0

+0

He probado esta solución en un dispositivo con Android 2.3.6 y desafortunadamente persisten los problemas de la posición del cursor. –

0

Aquí hay un código abierto, así contribuyó, biblioteca bien comprometida: https://github.com/plentz/jquery-maskmoney

Parece que responde a sus necesidades, no es cierto? Havent't probado con Android sin embargo.

+0

Desafortunadamente parece que hay algunos problemas de Android: https://github.com/plentz/jquery-maskmoney/issues?utf8=%E2%9C%93&q=android –

+1

Malo. Verificará problemas la próxima vez. –