Foros del Web » Programando para Internet » Javascript »

Mas de una funcion/evento para el atributo onclick

Estas en el tema de Mas de una funcion/evento para el atributo onclick en el foro de Javascript en Foros del Web. Es posible hacer que el atributo onclick (usado en una tag HTML <a href>) tenga mas de una sola funcion? he buscado en internet pero ...
  #1 (permalink)  
Antiguo 30/04/2012, 23:54
 
Fecha de Ingreso: abril-2010
Ubicación: Mexico
Mensajes: 21
Antigüedad: 14 años
Puntos: 0
Información Mas de una funcion/evento para el atributo onclick

Es posible hacer que el atributo onclick (usado en una tag HTML <a href>) tenga mas de una sola funcion? he buscado en internet pero sin ningun exito, lo poco que he buscado esta en ingles y a lo que se comenta es posible pero por mas que lo intento no tengo exito alguno

Los eventos que quiero incluir son

Código Javascript:
Ver original
  1. return hideuntilthanks_reload();

y

Código Javascript:
Ver original
  1. return thx({$post['pid']});

Actualmente ambos funcionan pero individualmente

Espero sus consejos, Saludos
  #2 (permalink)  
Antiguo 01/05/2012, 00:15
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Mas de una funcion/evento para el atributo onclick

buenas.
puesto que ambos tienen que devolver el valor del handler ‒ la función, supongo que para controlar el evento ‒ tienes que invocar ambas funciones indicando entremedio el operador AND. es decir, return funcion() && funcion().
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 01/05/2012, 00:38
 
Fecha de Ingreso: abril-2010
Ubicación: Mexico
Mensajes: 21
Antigüedad: 14 años
Puntos: 0
Respuesta: Mas de una funcion/evento para el atributo onclick

@zerokilled no me funciono, no se si deva a que son eventos distintos, es decir, que una funcion llama a un evento y otra a otro. Lo intente asi y solo se ejecutaba el evento 1

Código PHP:
            $post['thanks'] = "<a id=\"a{$post['pid']}\" onclick=\"return thx({$post['pid']}) && hideuntilthanks_reload()\" href=\"showthread.php?action=thank&tid={$post['tid']}&pid={$post['pid']}\">
            <img src=\"{$mybb->settings['bburl']}/{$theme['imgdir']}/postbit_thx.gif\" border=\"0\" alt=\"$lang->thx_main\" title=\"$lang->thx_main\" id=\"i{$post['pid']}\" /></a>"

  #4 (permalink)  
Antiguo 01/05/2012, 07:03
 
Fecha de Ingreso: marzo-2007
Mensajes: 82
Antigüedad: 17 años, 1 mes
Puntos: 21
Respuesta: Mas de una funcion/evento para el atributo onclick

Hola WalkmanXZ, si que se puede hacer, pero no de la manera que creo que piensas, no se pueden poner 2 funciones al evento click, pero se puede poner una que llame a las dos, y si necesitas devolver un valor (generalmente un booleano) hazlo como bien dice zerokilled

Código Javascript:
Ver original
  1. function union() {
  2.     var uno = thx({$post['pid']});
  3.     var dos = hideuntilthanks_reload();
  4.     return uno && dos;
  5. }

No siempre es conveniente hacer el && direcamente asi :thx({$post['pid']}) && hideuntilthanks_reload() por que si la función thx devuelve falso, null 0 o undefined la función hideuntilthanks_reload() no se ejecutará y a lo mejor no es lo que quieres

Código HTML:
$post['thanks'] = "<a id=\"a{$post['pid']}\" onclick=\"return union();\" href=\"showthread.php?action=thank&tid={$post['tid']}&pid={$post['pid']}\">
            <img src=\"{$mybb->settings['bburl']}/{$theme['imgdir']}/postbit_thx.gif\" border=\"0\" alt=\"$lang->thx_main\" title=\"$lang->thx_main\" id=\"i{$post['pid']}\" /></a>";  
__________________
Hazle un favor a tu cerebro y juega Ajedrez online
Chess online
  #5 (permalink)  
Antiguo 01/05/2012, 11:02
 
Fecha de Ingreso: abril-2010
Ubicación: Mexico
Mensajes: 21
Antigüedad: 14 años
Puntos: 0
Respuesta: Mas de una funcion/evento para el atributo onclick

Me sirvio tu respuesta chinanzio, el problema es que ahora me suelta un error

an Error had occured please contact administrator
TypeError: table is null

y si los pongo al revez es decir, cambio las funciones de lugar, solo se ejecucta el hide_reload() y si los pongo tal cual me lo marcas salta ese error

Edit: en otro foro me indican que si uso return una vez DETIENE la ejecucion de mas eventos con return
  #6 (permalink)  
Antiguo 01/05/2012, 12:01
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Mas de una funcion/evento para el atributo onclick

Me concentro en tu pregunta original, pasar más de una función con onclick

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>3 funciones onclick</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6. <script type="text/javascript">
  7. //<![CDATA[
  8. var a1;
  9. var b1;
  10.  
  11. function f1(a){
  12. a1 = a;
  13. }
  14.  
  15. function f2(b){
  16. b1 = b;
  17. }
  18.  
  19. function f3(){
  20. alert(a1 + '-' + b1);
  21. }
  22. //]]>
  23. </head>
  24. <a href="#" onclick="f1('uno');f2('dos');f3(); return false;">link</a>
  25. </body>
  26. </html>

Podés pasar 2 y más, hasta ahi no hay inconveniente
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #7 (permalink)  
Antiguo 01/05/2012, 12:25
 
Fecha de Ingreso: abril-2010
Ubicación: Mexico
Mensajes: 21
Antigüedad: 14 años
Puntos: 0
Respuesta: Mas de una funcion/evento para el atributo onclick

Sin exito aun, no se si tenga que dar el dato adicional que los eventos son bajo AJAX

el primero usa este JS
Código Javascript:
Ver original
  1. var pid=-1;
  2. var spinner=null;
  3. function thx_common(response)
  4. {
  5.     try
  6.     {
  7.         xml=response.responseXML;
  8.         remove=xml.getElementsByTagName('del').item(0).firstChild.data=="1";
  9.         lin=document.getElementById('a'+pid);
  10.         if (remove) {
  11.             table = document.getElementById('thx' + pid);
  12.             table.style.display = xml.getElementsByTagName('display').item(0).firstChild.data != 0 ?
  13.                  '' : 'none';
  14.             list = document.getElementById('thx_list' + pid);
  15.             list.innerHTML = xml.getElementsByTagName('list').item(0).firstChild.data;
  16.            
  17.             img = document.getElementById('i' + pid);
  18.             img.src = xml.getElementsByTagName('image').item(0).firstChild.data;
  19.         }
  20.         else
  21.         {
  22.             lin.innerHTML="";
  23.             lin.onclick=null;
  24.             lin.href="";
  25.             lin = null;
  26.         }
  27.     }
  28.     catch(err)
  29.     {
  30.         alert("an Error had occured please contact administrator")
  31.         alert(err);
  32.     }
  33.     finally
  34.     {
  35.         spinner.destroy();
  36.         spinner=null;
  37.         return lin;
  38.     }
  39.    
  40. }
  41. function thx_action(response)
  42. {
  43.     lin=thx_common(response)
  44.     if(lin!=null)
  45.     {
  46.         lin.onclick= new Function("","return rthx("+pid+");");
  47.         lin.href='showthread.php?action=remove_thank&pid='+pid;
  48.     }
  49. }
  50.  
  51. function rthx_action(response)
  52. {
  53.     lin=thx_common(response)
  54.     if (lin!=null)
  55.     {
  56.         lin.onclick = new Function("", "return thx(" + pid + ");");
  57.         lin.href = 'showthread.php?action=thank&pid=' + pid;
  58.     }
  59.    
  60.    
  61. }
  62.  
  63. function thx(id)
  64. {
  65.     if(spinner)
  66.         return false;
  67.     spinner = new ActivityIndicator("body", {image: "images/spinner_big.gif"});
  68.     pid=id;
  69.     pb="pid="+pid;
  70.     new Ajax.Request('xmlhttp.php?action=thankyou',{method: 'post',postBody:pb, onComplete:thx_action});
  71.     return false;
  72. }
  73.  
  74. function rthx(id)
  75. {
  76.     if(spinner)
  77.         return false;
  78.     spinner = new ActivityIndicator("body", {image: "images/spinner_big.gif"});
  79.     pid=id;
  80.     b="pid="+pid;
  81.     new Ajax.Request('xmlhttp.php?action=remove_thankyou',{method: 'post',postBody:b,onComplete:rthx_action});
  82.     return false;
  83. }

el segundo
Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.         <!--
  3.        
  4.         var spinner=null;
  5.        
  6.         function hideuntilthanks_reload()
  7.         {
  8.             b1 = b;
  9.             if(spinner){return false;}
  10.             this.spinner = new ActivityIndicator("body", {image: "images/spinner_big.gif"});
  11.             new Ajax.Request('{$mybb->settings['bburl']}/xmlhttp.php?action=hideuntilthanks_reload&my_post_key='+my_post_key, {method: 'post',postBody:"", onComplete:hideuntilthanks_done});
  12.             return false;
  13.         }
  14.        
  15.         function hideuntilthanks_done(request)
  16.         {
  17.             if(this.spinner)
  18.             {
  19.                 this.spinner.destroy();
  20.                 this.spinner = '';
  21.             }
  22.             if(request.responseText.match(/<error>(.*)<\/error>/))
  23.             {
  24.                 message = request.responseText.match(/<error>(.*)<\/error>/);
  25.                 alert(message[1]);
  26.             }
  27.             else if(request.responseText)
  28.             {
  29.                 $("hide_table").innerHTML = request.responseText;
  30.             }
  31.         }
  32.         -->
  33.         </script>

Ambos funcionan con esta linea

Código PHP:
Ver original
  1. $post['thanks'] = "<a href=\"\" onclick=\"return hideuntilthanks_reload();\">Recargar Beta </a><a id=\"a{$post['pid']}\" onclick=\"return thx({$post['pid']}); return hideuntilthanks_reload();\" href=\"showthread.php?action=thank&tid={$post['tid']}&pid={$post['pid']}\">
  2.             <img src=\"{$mybb->settings['bburl']}/{$theme['imgdir']}/postbit_thx.gif\" border=\"0\" alt=\"$lang->thx_main\" title=\"$lang->thx_main\" id=\"i{$post['pid']}\" /></a>";

Pero solo bajo onclick´s individuales, la idea es que un solo onclick (el que enlaza la imagen) realice ambos eventos

Saludos y disculpas porque de verdad no me manejo NADA en esto de AJAX y javascript
  #8 (permalink)  
Antiguo 01/05/2012, 12:25
 
Fecha de Ingreso: marzo-2007
Mensajes: 82
Antigüedad: 17 años, 1 mes
Puntos: 21
Respuesta: Mas de una funcion/evento para el atributo onclick

Cita:
Iniciado por WalkmanXZ Ver Mensaje
Me sirvio tu respuesta chinanzio, el problema es que ahora me suelta un error

an Error had occured please contact administrator
TypeError: table is null

y si los pongo al revez es decir, cambio las funciones de lugar, solo se ejecucta el hide_reload() y si los pongo tal cual me lo marcas salta ese error

Edit: en otro foro me indican que si uso return una vez DETIENE la ejecucion de mas eventos con return
Entonces el error está dentro de la función thx, por lo que entiendo ...
Sabes usar el firebug ??
tenes el codigo de la funcion thx ??

Tiene toda la pinta de que table es una variable javascript que debería ser un elemento del documento.
Es muy tipico cometer el siguiente error:
Código Javascript:
Ver original
  1. var table = document.getElementById("un-id");
y que el id "un-id" no lo tenga ningun elemento de la pagina, pareciera que el id es $post['pid'], a lo mejor el valor de eso no es el que esperabas, si pusieras el codigo de la funcion a lo mejor te podemos ayuedar con mas presicion
Saludos

Me imagino que el error sale en la siguiente line:
Código Javascript:
Ver original
  1. // ...
  2. table = document.getElementById('thx' + pid);
  3. table.style.display = xml.getElementsByTagName('display').item(0).firstChild.data != 0 ?            // en esta linea sale el error ?
  4. // ...

Tiene la pinta de que 'thx' + pid no lo tiene nadie como id
Podrias usar firebug para poner un breakpoint, y si no, pone un alert('thx' + pid); en esa linea aver que sale

NOTA: El codigo lo vi despues de escribir esto :P
__________________
Hazle un favor a tu cerebro y juega Ajedrez online
Chess online

Última edición por chinanzio; 01/05/2012 a las 12:39
  #9 (permalink)  
Antiguo 01/05/2012, 12:59
 
Fecha de Ingreso: abril-2010
Ubicación: Mexico
Mensajes: 21
Antigüedad: 14 años
Puntos: 0
Respuesta: Mas de una funcion/evento para el atributo onclick

Perdona pero no entendi, lo que quieres decir es que si esa funcion no esta en uso la retire?
  #10 (permalink)  
Antiguo 01/05/2012, 13:15
 
Fecha de Ingreso: marzo-2007
Mensajes: 82
Antigüedad: 17 años, 1 mes
Puntos: 21
Respuesta: Mas de una funcion/evento para el atributo onclick

Cita:
Iniciado por WalkmanXZ Ver Mensaje
Perdona pero no entendi, lo que quieres decir es que si esa funcion no esta en uso la retire?
no, no
que sale al hacer ?
Código Javascript:
Ver original
  1. alert('thx' + pid);
__________________
Hazle un favor a tu cerebro y juega Ajedrez online
Chess online
  #11 (permalink)  
Antiguo 01/05/2012, 13:57
 
Fecha de Ingreso: abril-2010
Ubicación: Mexico
Mensajes: 21
Antigüedad: 14 años
Puntos: 0
Respuesta: Mas de una funcion/evento para el atributo onclick

Bueno, puse el firebug y segui sin entender, la verdad me rompo mucha la cabeza con esto del JS ya que me manejo mas con PHP

mas atras me comentaste que te pasara la funcion thx, aqui te la dejo aunque mas arriba la especifique.

Código Javascript:
Ver original
  1. function thx(id)
  2. {
  3.     if(spinner)
  4.         return false;
  5.     spinner = new ActivityIndicator("body", {image: "images/spinner_big.gif"});
  6.     pid=id;
  7.     pb="pid="+pid;
  8.     new Ajax.Request('xmlhttp.php?action=thankyou',{method: 'post',postBody:pb, onComplete:thx_action});
  9.     return false;
  10. }

Otro dato es que las funciones de THX las llamo desde un archivo.js individual y que las de reload las llamo desde la misma plantilla al ser mas corta
  #12 (permalink)  
Antiguo 01/05/2012, 15:03
 
Fecha de Ingreso: marzo-2007
Mensajes: 82
Antigüedad: 17 años, 1 mes
Puntos: 21
Respuesta: Mas de una funcion/evento para el atributo onclick

Código Javascript:
Ver original
  1. // ...
  2. // que sale en el alert ???
  3. alert('thx' + pid);
  4. table = document.getElementById('thx' + pid);
  5. // ...
__________________
Hazle un favor a tu cerebro y juega Ajedrez online
Chess online
  #13 (permalink)  
Antiguo 01/05/2012, 17:12
 
Fecha de Ingreso: abril-2010
Ubicación: Mexico
Mensajes: 21
Antigüedad: 14 años
Puntos: 0
Respuesta: Mas de una funcion/evento para el atributo onclick

haber, me tiro esto

thxundefined

TypeError: table is null

cuando uso el normal es decir sin la funcion para llamar a los 2 me suelta

thx1 y termina su funcion como tendria que ser

Última edición por WalkmanXZ; 01/05/2012 a las 17:19
  #14 (permalink)  
Antiguo 01/05/2012, 17:31
 
Fecha de Ingreso: marzo-2007
Mensajes: 82
Antigüedad: 17 años, 1 mes
Puntos: 21
Respuesta: Mas de una funcion/evento para el atributo onclick

Cita:
Iniciado por WalkmanXZ Ver Mensaje
haber, me tiro esto

thxundefined

TypeError: table is null

cuando uso el normal es decir sin la funcion para llamar a los 2 me suelta

thx1 y termina su funcion como tendria que ser
podrías poner el código que funciona y el que no ?

También es importante desde donde se llama la función.
He visto que usas otro lenguaje para pasarle a javascript el valr del id
{$post['pid']} si esta instrucción está en un archivo .js entonces no es procesado por el lenguaje que usas.
__________________
Hazle un favor a tu cerebro y juega Ajedrez online
Chess online
  #15 (permalink)  
Antiguo 01/05/2012, 18:03
 
Fecha de Ingreso: abril-2010
Ubicación: Mexico
Mensajes: 21
Antigüedad: 14 años
Puntos: 0
Respuesta: Mas de una funcion/evento para el atributo onclick

la variable {$post['pid']} la saca como tendria que ser, en cuanto a esto no hay problema ya que asi esta programado y es PHP

para meter mas cosas al sistema (MyBB, un sistema de foros) yo uso find_replace desde PHP pero por el momento (solo para estar testeando) agrego las funciones y lo que me indicas directamente al sistema de templates (cual si fuera wordpress (para que te des una idea mas general))

yo a la plantilla agrego esto

Código Javascript:
Ver original
  1. function union() {
  2.         var uno = thx({$post['pid']});
  3.         var dos = hideuntilthanks_reload();
  4.         return uno && dos;
  5.     }

tal cual tu me lo indicaste, hasta ahi vamos bien,

al plugin/extension/hack en PHP yo agrego esto

Código PHP:
Ver original
  1. $post['thanks'] = "<a id=\"a{$post['pid']}\" onclick=\"return union()\" href=\"showthread.php?action=thank&tid={$post['tid']}&pid={$post['pid']}\">
  2.             <img src=\"{$mybb->settings['bburl']}/{$theme['imgdir']}/postbit_thx.gif\" border=\"0\" alt=\"$lang->thx_main\" title=\"$lang->thx_main\" id=\"i{$post['pid']}\" /></a>";

y en el archivo.js yo agrego lo que me indicaste (el alert) asi

Código Javascript:
Ver original
  1. function thx(id)
  2. {
  3.     if(spinner)
  4.         return false;
  5.     spinner = new ActivityIndicator("body", {image: "images/spinner_big.gif"});
  6.     pid=id;
  7.     pb="pid="+pid;
  8.     alert('thx' + pid);
  9.     table = document.getElementById('thx' + pid);
  10.     new Ajax.Request('xmlhttp.php?action=thankyou',{method: 'post',postBody:pb, onComplete:thx_action});
  11.     return false;
  12. }

Ahi me marca el error table is null y thxundefined (en 2 popups distintos) y no realiza la accion (almenos en AJAX, osea que marca el error y al darle Aceptar, recarga la pagina)


cuando yo uso


Código PHP:
Ver original
  1. $post['thanks'] = "<a id=\"a{$post['pid']}\" onclick=\"return thx({$post['pid']})\" href=\"showthread.php?action=thank&tid={$post['tid']}&pid={$post['pid']}\">
  2.             <img src=\"{$mybb->settings['bburl']}/{$theme['imgdir']}/postbit_thx.gif\" border=\"0\" alt=\"$lang->thx_main\" title=\"$lang->thx_main\" id=\"i{$post['pid']}\" /></a>";

y el alert agregado en la funcion, me regresa esto en un popup: thx1 (que se supone que es el ID que le corresponde y señal de que funciona como debe) y al final realiza su funcion tal cual deveria (sin el reload)
  #16 (permalink)  
Antiguo 01/05/2012, 18:13
 
Fecha de Ingreso: marzo-2007
Mensajes: 82
Antigüedad: 17 años, 1 mes
Puntos: 21
Respuesta: Mas de una funcion/evento para el atributo onclick

Prueba a escribir la funcion union en el tag

Código PHP:
Ver original
  1. $post['thanks'] = "<a id=\"a{$post['pid']}\" onclick=\"return function(){var uno = thx({$post['pid']});var dos = hideuntilthanks_reload(); return uno && dos;}\" href=\"showthread.php?action=thank&tid={$post['tid']}&pid={$post['pid']}\"> img src=\"{$mybb->settings['bburl']}/{$theme['imgdir']}/postbit_thx.gif\" border=\"0\" alt=\"$lang->thx_main\" title=\"$lang->thx_main\" id=\"i{$post['pid']}\" /></a>";
__________________
Hazle un favor a tu cerebro y juega Ajedrez online
Chess online
  #17 (permalink)  
Antiguo 01/05/2012, 18:21
 
Fecha de Ingreso: abril-2010
Ubicación: Mexico
Mensajes: 21
Antigüedad: 14 años
Puntos: 0
Respuesta: Mas de una funcion/evento para el atributo onclick

Nada, me redirige (recarga la pagina aplicando todas las funciones pero el caso es que no redirija)
  #18 (permalink)  
Antiguo 01/05/2012, 18:38
 
Fecha de Ingreso: marzo-2007
Mensajes: 82
Antigüedad: 17 años, 1 mes
Puntos: 21
Respuesta: Mas de una funcion/evento para el atributo onclick

Prueba este, la diferencia es que se niega dos veces el return de la funcion. Esto se hace para que el tipo sea booleano si o si.
Si este resultado no es booleano entonces redirigirá.
Espero que esta sea la buena avisa
Saludos


Código PHP:
Ver original
  1. $post['thanks'] = "<a id=\"a{$post['pid']}\" onclick=\"return function(){var uno = thx({$post['pid']});var dos = hideuntilthanks_reload(); return !!(uno && dos);}\" href=\"showthread.php?action=thank&tid={$post['tid']}&pid={$post['pid']}\"> img src=\"{$mybb->settings['bburl']}/{$theme['imgdir']}/postbit_thx.gif\" border=\"0\" alt=\"$lang->thx_main\" title=\"$lang->thx_main\" id=\"i{$post['pid']}\" /></a>";
__________________
Hazle un favor a tu cerebro y juega Ajedrez online
Chess online
  #19 (permalink)  
Antiguo 01/05/2012, 18:46
 
Fecha de Ingreso: abril-2010
Ubicación: Mexico
Mensajes: 21
Antigüedad: 14 años
Puntos: 0
Respuesta: Mas de una funcion/evento para el atributo onclick

Sin exito aun, redirecciono aplicando ambas funciones
  #20 (permalink)  
Antiguo 01/05/2012, 20:13
 
Fecha de Ingreso: marzo-2007
Mensajes: 82
Antigüedad: 17 años, 1 mes
Puntos: 21
Respuesta: Mas de una funcion/evento para el atributo onclick

Perdona mi anterior respuesta estaba mal
Prueba esta

Código PHP:
Ver original
  1. $post['thanks'] = "<a id=\"a{$post['pid']}\" onclick=\"var uno = thx({$post['pid']});var dos = hideuntilthanks_reload(); return uno && dos;\" href=\"showthread.php?action=thank&tid={$post['tid']}&pid={$post['pid']}\"> img src=\"{$mybb->settings['bburl']}/{$theme['imgdir']}/postbit_thx.gif\" border=\"0\" alt=\"$lang->thx_main\" title=\"$lang->thx_main\" id=\"i{$post['pid']}\" /></a>";
__________________
Hazle un favor a tu cerebro y juega Ajedrez online
Chess online
  #21 (permalink)  
Antiguo 01/05/2012, 20:20
 
Fecha de Ingreso: abril-2010
Ubicación: Mexico
Mensajes: 21
Antigüedad: 14 años
Puntos: 0
Respuesta: Mas de una funcion/evento para el atributo onclick

funciona pero solo ejecuta el thx
  #22 (permalink)  
Antiguo 01/05/2012, 20:32
 
Fecha de Ingreso: marzo-2007
Mensajes: 82
Antigüedad: 17 años, 1 mes
Puntos: 21
Respuesta: Mas de una funcion/evento para el atributo onclick

La siguiente linea tiene un alert añadido que dice hola ... se ejecuta el alert ???

Código PHP:
Ver original
  1. $post['thanks'] = "<a id=\"a{$post['pid']}\" onclick=\"var uno = thx({$post['pid']});var dos = hideuntilthanks_reload(); alert('hola'); return uno && dos;\" href=\"showthread.php?action=thank&tid={$post['tid']}&pid={$post['pid']}\"> img src=\"{$mybb->settings['bburl']}/{$theme['imgdir']}/postbit_thx.gif\" border=\"0\" alt=\"$lang->thx_main\" title=\"$lang->thx_main\" id=\"i{$post['pid']}\" /></a>";
__________________
Hazle un favor a tu cerebro y juega Ajedrez online
Chess online
  #23 (permalink)  
Antiguo 01/05/2012, 20:41
 
Fecha de Ingreso: abril-2010
Ubicación: Mexico
Mensajes: 21
Antigüedad: 14 años
Puntos: 0
Respuesta: Mas de una funcion/evento para el atributo onclick

Si, lo ejecuta y tambien realiza el evento thx
  #24 (permalink)  
Antiguo 01/05/2012, 20:53
 
Fecha de Ingreso: marzo-2007
Mensajes: 82
Antigüedad: 17 años, 1 mes
Puntos: 21
Respuesta: Mas de una funcion/evento para el atributo onclick

Entonces el error está dentro la funcion hideuntilthanks_reload

puse unos comentarios en el codigo
Código Javascript:
Ver original
  1. var spinner = null;
  2.  
  3. function hideuntilthanks_reload() {
  4.     b1 = b;
  5.    
  6.     // ACA SPINNER SIEMPRE ES NULL (SEGUN ESTE SOLO TROZO DE CODIGO)
  7.     // POR LO TANTO LA FUNCION NO PASA DE ESTA LINEA
  8.     if (spinner) {
  9.         return false;
  10.     }
  11.    
  12.     // POR QUE USAS this.spinner AQUÍ ??? POR CASUALIDAD NO QUERRAS USAR LA VARIABLE SPINNER DECLARADA EN LA PRIMERA LINEA ??
  13.     this.spinner = new ActivityIndicator("body", {
  14.         image : "images/spinner_big.gif"
  15.     });
  16.     new Ajax.Request('{$mybb->settings[bburl]}/xmlhttp.php?action=hideuntilthanks_reload&my_post_key=' + my_post_key, {
  17.         method : 'post',
  18.         postBody : "",
  19.         onComplete : hideuntilthanks_done
  20.     });
  21.     return false;
  22. }
  23.  
  24. function hideuntilthanks_done(request) {
  25.     // ES QUE ACA TAMBIEN USAS this.spinner Y SEGUN ESTE TROZO DE CODIGO ESTO SIEMPRE VA A SER NULL
  26.     if (this.spinner) {
  27.         this.spinner.destroy();
  28.         this.spinner = '';
  29.     }
  30.     if (request.responseText.match(/<error>(.*)<\/error>/)) {
  31.         message = request.responseText.match(/<error>(.*)<\/error>/);
  32.         alert(message[1]);
  33.     } else if (request.responseText) {
  34.         $("hide_table").innerHTML = request.responseText;
  35.     }
  36. }
__________________
Hazle un favor a tu cerebro y juega Ajedrez online
Chess online
  #25 (permalink)  
Antiguo 01/05/2012, 21:02
 
Fecha de Ingreso: abril-2010
Ubicación: Mexico
Mensajes: 21
Antigüedad: 14 años
Puntos: 0
Respuesta: Mas de una funcion/evento para el atributo onclick

Te amo jaja

Código Javascript:
Ver original
  1. if (spinner) {
  2.         return false;
  3.     }

era el problema de todo... por fin he terminado mi super plugin, y mi primer plugin con AJAX, te dejare unos creditos por ahi y muchisimas gracias por todo.

Tema solucionado!
  #26 (permalink)  
Antiguo 01/05/2012, 21:06
 
Fecha de Ingreso: marzo-2007
Mensajes: 82
Antigüedad: 17 años, 1 mes
Puntos: 21
Respuesta: Mas de una funcion/evento para el atributo onclick

Cita:
Iniciado por WalkmanXZ Ver Mensaje
Te amo jaja

Código Javascript:
Ver original
  1. if (spinner) {
  2.         return false;
  3.     }

era el problema de todo... por fin he terminado mi super plugin, y mi primer plugin con AJAX, te dejare unos creditos por ahi y muchisimas gracias por todo.

Tema solucionado!
Me alegro, suerte con el plugin :P
__________________
Hazle un favor a tu cerebro y juega Ajedrez online
Chess online

Etiquetas: onclick
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:01.