Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > HTML, Javascript y otros
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-09-2020
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Habilitar boton html deshabilitado

Hola, compañeros.
Estoy desarrollando un sistema de facturación.

Tengo en pantalla una DataTable con los artículos en la que cada úno tiene un botón de añadir.

Cuando pulsamos el botón, se añade el artículo a la factura (en confección) y se desactiva el botón de Añadir para no repetir artículos, ya que en las líneas de la factura (en confección) se puede modificar el número de unidades de cada artículo.

El problema surge cuando se elimina un artículo de la factura ( en confección) y se quiere volver a añadir. Pues el botón queda deshabilitado y no se puede.

He intentado resolverlo de mil y una maneras, pero no lo consigo. La última es esta:

Código PHP:
function activa_aniadir(index){

var 
searchText document.getElementsByName("idarticulo[]")[index].value;    
$.
each($('#tblarticulos tbody tr'),function()
{  
    var 
currentRow=$(this);  
        var 
col1_value=currentRow.find("td:eq(5)").text();
       
    if (
col1_value == searchText)
    { 
alert('encontrado id = '+col1_value); // La identificación de la linea ES CORRECTA
        //var boton = currentRow.find("td:eq(0)").button();
        
currentRow('td:eq(0)').button().removeAttribute("disabled");
    
//    alert(currentRow.closest('tr').index());
//    borrar_filas(currentRow.closest('tr').index());    
    //$(this).removeAttribute("disabled");
    
        //alert(boton.name);
        //    boton[0].innerHTML.disabled="false";
    //    var activar = currentRow.find("td:eq(0)");
    //    activar['#addetalle'].prop("disabled",false);
    
}
/*
         indice = busca_fila(index);   
alert('indice = '+indice);
 // aquí me he quedado. ¿como selecciono el boton Añadir de la fila indice 
 // en la lista de articulos para habilitarlo de nuevo?
 // con 
 var table = $('#tblarticulos').DataTable();
 
table.row(':eq(0)', { page: 'current' }).select();
table('addetalle').prop("disabled",false);
*/


});


El código está en Javascript. Lo pongo en PHP para resaltarlo. La solución debe estar en Javascript.

He conseguido identificar la línea de la DataTable de los artículos.

Pero no sé cómo activar el botón. Veréis que he intentado de casi todo (está comentado)

Os pongo también la declaración de cada línea de la DataTable de los artículos:
Código PHP:
case 'listarArticulos':
            require_once 
"../modelos/Articulo.php";
            
$articulo=new Articulo();

                
$rspta=$articulo->listarActivosVenta();
            
$data=Array();

            while (
$reg=$rspta->fetch_object()) {
                
$btncolor='';
                if (
$reg->stock<=10) {
                    
$btncolor='<button class="btn btn-danger btn-xs">'.$reg->stock.'</button>';
                }elseif (
$reg->stock>10 && $reg->stock<30 ) {
                    
$btncolor='<button class="btn btn-warning btn-xs">'.$reg->stock.'</button>';
                }elseif (
$reg->stock>=30) {
                    
$btncolor='<button class="btn btn-success btn-xs">'.$reg->stock.'</button>';
                }
        
// pasamos el tipo_iva de cada artículo para calcularlo en crearventa.js
        
if ($reg->tipo_iva == 'G') {$impuesto = (floatval($_SESSION['iva_G']));}
        else 
        if (
$reg->tipo_iva == 'R') {$impuesto = (floatval($_SESSION['iva_R']));}
        else 
        if (
$reg->tipo_iva == 'S') {$impuesto = (floatval($_SESSION['iva_S']));}

                
$data[]=array(
                
"0"=>'<button class="btn btn-success btn-xs" id="addetalle" name="addetalle" 
onclick="agregarDetalle('
.$reg->idarticulo.',\''.$reg->nombre.'\','.$reg->precio_venta.',
'
.$reg->stock.','.$impuesto.')"><span class="fa fa-plus"></span> Añadir</button>',
                
"1"=>$reg->nombre,
                
"2"=>$reg->codigo,
                
"3"=>$btncolor,
                
"4"=>"<img src='../files/articulos/".$reg->imagen."' height='40px' width='40px'>",
                  
//lo pongo yo jmms para usarlo al activar de nuevo el boton Añadir
                  
"5"=>$reg->idarticulo
                  
);
            }

            
$results=array(
                 
"sEcho"=>1,//info para datatables
                 
"iTotalRecords"=>count($data),//enviamos el total de registros al datatable
                 
"iTotalDisplayRecords"=>count($data),//enviamos el total de registros a visualizar
                 
"aaData"=>$data); 
            echo 
json_encode($results);

                break; 
Necesito vuestra ayuda. Gracias de antemano.
Saludos Cordiales.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)

Última edición por jhonalone fecha: 22-09-2020 a las 18:15:33.
Responder Con Cita
  #2  
Antiguo 23-09-2020
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

De las siguientes dos líneas:

Código PHP:

//var boton = currentRow.find("td:eq(0)").button();
currentRow('td:eq(0)').button().removeAttribute("disabled"); 
... me parece que ninguna es correcta, aunque, con el "button()" me pierdo un poco... La siguiente línea te daría el elemento que buscas (otra cosa es que sea el botón o no)...

Código PHP:

var boton currentRow.find("td:eq(0)");
boton.removeAttr('disabled'); 
Es decir, "find" retornará (si retorna algo, podrías comprobarlo con "boton.length", que debería ser 1) el elemento que buscas (mediante "find") ya en un objeto jQuery, de modo que podrías usar, dierctamente, el método "removeAttr" de dicho objeto.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 23-09-2020
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Gracias, dec por tu respuesta.
No funcionó.
No te molestes, busco otra solución alternativa.
Siempre un placer saludarte.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
  #4  
Antiguo 24-09-2020
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Pero, si no funcionó, es porque "currentRow.find("td:eq(0)")" no es el elemento / botón que esperas... ojo porque estás usando un selector, mediante "find" estás buscando un determinado elemento dentro de "currentRow", de hecho ya de entrada (antes no me fijé en ello) se ve que no funcionaría, pues, el elemento que buscas es el primer "td", y, este obviamente no es un botón...

O sea, que, lo que tendrías o podrías hacer es proporcionar un selector correcto a "find", algo como "find('button')", suponiendo que sólo hubiese un botón dentro de "currentRow"... pero también cualquier otro selector acaso más específico, qué sé yo, algo como "find('.my-button')", supuesto que el botón en cuestión tuviese la clase "my-button".
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Botón de impresion deshabilitado Analia29 Impresión 3 27-07-2007 21:34:04
crear objeto con un boton en C# (de C# a html) JuanErasmo HTML, Javascript y otros 0 13-01-2007 01:41:09
Habilitar Boton de Busqueda al enfocar Objetos Especificos ygkw API de Windows 6 01-11-2006 15:53:11
Label deshabilitado de color jam888 Varios 2 05-05-2006 00:47:03
Habilitar un Boton sobre un control deshabilitado... ingel Varios 4 28-12-2004 08:57:59


La franja horaria es GMT +2. Ahora son las 08:46:23.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi