Separador de miles al momento de escribir en formularios symfony2.3

2,780 views
Skip to first unread message

Carlos Cordova

unread,
Nov 17, 2015, 3:49:59 PM11/17/15
to symfony-es
Estimados estoy intentando generar mientras se escribe 1000 que atutomaticamente el sistema separe los miles 1.000 esto me resulta con javascript y HTML pero no logro generarlo en las etiquetas form de twig....

estoy probando con esto pero al parecer estoy muy perdido...

{% extends 'MWSimpleCrudGeneratorBundle::layout.html.twig' %}

{% block title %}
{{ parent() }} - {{ 'views.edit.edit'|trans({'%entity%': 'Ítem '}, 'MWSimpleCrudGeneratorBundle') }}
{% endblock %}

{% block page %}
   

   
<h1>Solicitud  Nº: <a style="color:#F00000">{{entity.numero}}</a></h1>
   
   
<form class="well" action="{{ path('usuario_create') }}" method="post" {{ form_enctype(form) }}
          onsubmit
= "return confirm('¿Desea cargar item ?')">
       
     
<table class="record_properties" >
       
<tbody>
       
<THEAD>
           
<TR> <h1>Detalle  en $</h1></tr>
       
</THEAD>    
        <tr>
            <th> Cuenta </
th>
           
<th> Monto  en $ </th>
            <th> Justificación </
th>
       
<tr>
           
<th>

               
{{ form_errors(form.ctacont) }}
               
{{ form_widget(form.ctacont) }}</th>
           
     
           
           
<th>
               
{{ form_errors(form.monto) }}
               
{{ form_widget(form.monto,{'onKeyUp'  :'prueba()'}) }}</th>
           
           
<th>
               
               
{{ form_errors(form.justificacion) }}
               
{{ form_widget(form.justificacion) }}</th>
               
       
</tr>


        </
tbody>
   
</table>  
    <div>

        {{ form_errors(form.presup,{ 'attr': {'style': 'display:none'} }) }}
        {{ form_widget(form.presup, { 'attr': {'style': 'display:none'} }) }}
        {{ form_rest (form)}}
    </
div>
   

   
</form>

        <div>
    <div class="float-left">
        <a class="btn" href="{{ path('usuario_show', { 'id': idsol }) }}" method="post">
            {{ 'views.recordactions.backtothelist'|trans({}, 'MWSimpleCrudGeneratorBundle') }}
        </
a>
       
   
</div>
       


</
div>{% endblock %}

{% block javascript %}
 
<script type="text/javascript">  


function prueba()
{
var num = {{ form_widget(form.monto)}}.value.replace(/\./g,'');
if(!isNaN(num)){
num
= num.toString().split('').reverse().join('').replace(/(?=\d*\.?)(\d{3})/g,'$1.');
num
= num.split('').reverse().join('').replace(/^[\.]/,'');
{{ form_widget(form.monto)}}.value = num;
}
 
else{ alert('Solo se permiten numeros');
{{ form_widget(form.monto)}}.value = {{ form_widget(form.monto)}}.value.replace(/[^\d\.]*/g,'');
}
}



   
</script>
{% endblock %}


Manuel Aguirre

unread,
Nov 18, 2015, 6:12:39 AM11/18/15
to symfo...@googlegroups.com
Buenas, symfony ofrece dos campos de formulario que poseen una opción llamada grouping que puede servirte para lo que necesitas del lado de php:

http://symfony.com/doc/current/reference/forms/types/money.html#grouping
http://symfony.com/doc/current/reference/forms/types/number.html#grouping

Lo que deberás investigar es cual es el valor que se le debe pasar, ya que dice que es un integer,pero no muestran un ejemplo de uso.

Saludos!

--
--
Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Google Groups.
Para publicar en este grupo, envía un email a symfo...@googlegroups.com
Para darte de baja, envía un email a symfony-es+...@googlegroups.com
El resto de opciones puedes encontrarlas en http://groups.google.com/group/symfony-es?hl=es

---
Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a symfony-es+...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--

Manuel Aguirre.


manuel_j555 | Desarrollador de Software | Optime Consulting | twitter | github | Sitio web


A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos de leer manuales.

Carlos Cordova

unread,
Nov 18, 2015, 11:27:44 AM11/18/15
to symfony-es
Muchas Gracias por contestar, lo estuve investigando pero no me permite o mejor dicho no logro que el usuario una vez este ingresando los datos, estos atomaticamente vayan separando los miles, si al traer los datos de la base datos y los muestro si separa los miles...pero mi problemas es al escribir, por eso e estado buscando como hacerlo con JS....sera la unica forma??? lo que me propones realizara el cambio automaticamente... en HTML con Javascripr he utilizado lo siguente.

<form>
<input type="text" onkeyup="format(this)" onchange="format(this)">
</form>


function format(input)
{
var num = input.value.replace(/\./g,'');

if(!isNaN(num)){
num = num.toString().split('').reverse().join('').replace(/(?=\d*\.?)(\d{3})/g,'$1.');
num = num.split('').reverse().join('').replace(/^[\.]/,'');
input.value = num;

}
 
else{ alert('Solo se permiten numeros');
input.value = input.value.replace(/[^\d\.]*/g,'');
}
}

Quiero hacer lo mismo pero no logro tomar el evento onkeyup en twig....alguna sugerencia


Gracias nuevamente....

Manuel Aguirre

unread,
Nov 18, 2015, 12:53:03 PM11/18/15
to symfo...@googlegroups.com
Creería que la unica opción de lograr ver los puntos y comas mientras escribes es con javascript, busca a ver si encuentras algún plugin, o sino te tocará crearte una funcion javascript para eso.

Estuve buscando un poco y no encontré un plugin, quizas una busqueda más extensa te permita dar con lo que necesitas.

Saludos!

Manuel Aguirre

unread,
Nov 18, 2015, 12:56:16 PM11/18/15
to symfo...@googlegroups.com
La forma correcta de pasar atributos a los campos según la documentación es:

{{ form_widget(form.monto,{ 'attr': {'onKeyUp'  :'prueba()'} }) }}

Saludos!

Carlos Cordova

unread,
Nov 18, 2015, 1:36:06 PM11/18/15
to symfony-es
gracias lo voy a probar....y te cuento

Carlos Cordova

unread,
Nov 19, 2015, 10:45:30 AM11/19/15
to symfony-es
FUNCIONO, el unico problema es que no me deja ingresar mas de 8 digitos pero eso ya lo intento solucionar ahora.....

Gracias Mister los cambios fueron los siguientes:

            <th>
                {{ form_errors(form.monto) }}
                {{ form_widget(form.monto,{ 'attr': {'onKeyUp'  :'prueba()'} }) }}</th>
          
            <th>

{% block javascript %}
 <script type="text/javascript">  

function prueba()
{
var num = scp_scpbundle_presdet_monto.value.replace(/\./g,'');

if(!isNaN(num)){
num = num.toString().split('').reverse().join('').replace(/(?=\d*\.?)(\d{3})/g,'$1.');
num = num.split('').reverse().join('').replace(/^[\.]/,'');
scp_scpbundle_presdet_monto.value = num;

}
 
else{ alert('Solo se permiten numeros');
scp_scpbundle_presdet_monto.value = scp_scpbundle_presdet_monto.value.replace(/[^\d\.]*/g,'');
}
}
   


    </script>
{% endblock %}


El miércoles, 18 de noviembre de 2015, 14:56:16 (UTC-3), Manuel Aguirre escribió:
Reply all
Reply to author
Forward
0 new messages