[Solucionado] filas dinamicas con inputs y solo numeros

Iniciado por landerzx, 5 Diciembre 2014, 16:28 PM

0 Miembros y 1 Visitante están viendo este tema.

landerzx

 :rolleyes:, hola tego una duda, me gustaria saber como hacer para cuando este agregando filas en una tabla dinamica en que lo que yo ingrese sea solo numeros enteros y decimales, cuando agrego mi fila me acepta incluso letras, le agregue una clase para que valide que todo lo que posea esa clase sea solo numericos pero nada.
algo asi puse de mi libreria JS de jquery
$(".imp_cantidad").numeric();
porfa si alguien sabe me avisa porfavor

Slikp

- Buenas landerzx, en primer lugar es un tanto dificil ayudarte con tan poca informacion, dado que tu problema puede radicar en otra parte de tu codigo por ejemplo es posible que estes condicionando mal tu codigo, por otro lado hasta donde se yo el metodo .numeric(); no existe en Jquery la sintaxys seria .isNumeric();

Código (javascript) [Seleccionar]

$.isNumeric( "10" ); 


- A parte soy nuevo en Jquery tambien pero a mi pensar yo creo que la forma en como expresas tu metodo es incorrecta osea yo digo que esto esta mal.

Código (javascript) [Seleccionar]

$(".imp_cantidad").numeric();


- Ojo no me refiero a que la solucion sea esta.

Código (javascript) [Seleccionar]

$(".imp_cantidad").isNumeric();


- Como dije soy novato en Jquery y de paso nunca he usado ese metodo en Jquery deberias probar primero como esta en el codigo de arriba pero segun yo no va a funcionar, yo primero intentaria sacar el valor que contiene tu clase".imp_cantidad" con:

Código (javascript) [Seleccionar]

$(this).val()


- Y luego comprobar si es un numero, a parte como te dije es dificil ayudarte con tan poca informacion porque ".imp_cantidad" es una clase contenida en un input??

- Saludos.

#!drvy

Para que un input acepte solo numeros debes usar ya sea los atributos type de input que vienieron con HTML5 o javascript o el pattern (tambien con html5).

Ejemplo:

Código (html4strict) [Seleccionar]
<input type="number" placeholder="solo numeros" />

Código (html4strict) [Seleccionar]
<input type="text" pattern="\d*" placeholder="solo numeros" />

Saludos

Slikp

- Buenas #!drvy, yo habia pensado sugerirle eso tambien pero el dice que quiere ingresar numero enteros y decimales. Y creo que Input type Number no acepta decimales o si ? .

- Saludos

#!drvy

Ah eso no lo lei xD Bueno en tal caso puede usar:

Código (html4strict) [Seleccionar]
<input type="text" pattern="^[0-9\.]+$" placeholder="solo numeros" />

O comprobarlo con javascript (como has mostrado).

Saludos

landerzx

#5
ok la programacion es mas o menos asi  pero el metodo numeric() si existe y esta bien, si me vale pero aqui va la cosa


Código (javascript) [Seleccionar]
$("#btn_add_fila").click(function() {
       var acumulador_porcentaje = 0;
       var permitir_nueva_fila = 1;

       num_filas_materiales();//asigna la verdadera cantidad de filas de la tabla(contador_fila)
       //automatiamente incrementa
       // Almacenamos en una variable todo el contenido de la nueva fila que deseamos agregar
       var nueva_fila = "<tr id='componentes_materiales_"+contador_fila+"' >"+
                           "<td height='22' valign='middle' class='style4'>"+
                               "<input type='hidden' name='txt_codigo_item[]' id='txt_codigo_item_"+contador_fila+"' />"+
                               "<input type='text' readonly='readonly' name='txt_codigo_empresa[]' id='txt_codigo_empresa_"+contador_fila+"' />"+
                               "<input type='text' name='txt_descripcion[]' id='txt_descripcion_"+contador_fila+"' size='30' onkeypress='autocompletado_productos_filas_dinamicas("+contador_fila+"); id_autocomplete_producto="+this.id+"' />"+
                           "</td>"+
                           "<td height='22' valign='middle' class='style4'>"+
                               "<input type='text' name='txt_cantidad[]' class='imp_cantidad' id='txt_cantidad_"+contador_fila+"' size='15' />"+
                           "</td>"+
                           "<td height='22' valign='middle' class='style4'>"+
                               "<input type='button' id='btn_remove_formula_det_"+contador_fila+"' onclick='eliminar_fila("+contador_fila+")' class='btn-icono-solo btn-icono-solo-suprimir clsEliminarFila' />"+
                           "</td>"+
                        "</tr>";
           //contador_fila++;
           var objTabla = "#tbl_materiales";

           // Agregamos la nueva fila a la tabla
           $(objTabla).find('tbody').append(nueva_fila);

           // Si el cuerpo de la tabla esta oculto (al agregar una nueva fila) lo mostramos
           if(!$(objTabla).find('tbody').is(':visible')){
               // Le hacemos clic al titulo de la tabla, para mostrar el contenido
               $(objTabla).find('caption').click();
           }
       });
//eso si hace

html
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="c" id="tbl_materiales">
                       <tr >
                           <td width="60%" align="left" class="style22">MATERIALES</td>
                           <td width="40%" colspan="2" align="left" class="style22">CANTIDAD</td>
                       </tr>
                    //aqui se agrega la fila
</table>



veras el metodo que puse anteriormente si me coje pero como esto es un html agregado no valida eso de ingresar solo numeros, ese es un problema


Mod: Obligatorio el uso de etiquetas GeSHi.

landerzx


Slikp

- No me sabia esta:

Código (html4strict) [Seleccionar]

<input type="text" pattern="^[0-9\.]+$" placeholder="solo numeros" />


- Gracias #!drvy.

MinusFour

Cita de: Slikp en  5 Diciembre 2014, 17:56 PM
- No me sabia esta:

Código (html4strict) [Seleccionar]

<input type="text" pattern="^[0-9\.]+$" placeholder="solo numeros" />


- Gracias #!drvy.

El problema con ese regex es que puedes tener cosas como:

0.0.0 que no es ningun numero.

Algo que se me ocurre:

Código (html5) [Seleccionar]

<input type="text" pattern=pattern="^[0-9]+(?:[\.\,][0-9]+)?$" placeholder="solo numeros">


Puedes usar numeros decimales con comas o puntos o numeros enteros.

exploiterstack

No estaría mal que después de hacer lo que te dice #!drvy filtraras también esas validaciónes que deseas por medio de jQuery, etc...Y por supuesto en el lado del servidor si haces uso de este, ya que se puede saltar muy fácilmente.

Un saludo!