Archivado como javascript, web por josepcoves | 0 comments
Para hacer que todos los checkboxes de una página en concreto se comporten como un radiobutton (que solamente se muestre uno activo en cada momento). Podemos usar el siguiente Javascript:
function set_change(a) {
if (a.checked==true){
var inputs = document.getElementsByTagName('input');
for(var i=0; i<inputs.length; i++){
if(inputs[i].getAttribute('type')=='checkbox'){
if (inputs[i]!=a)
inputs[i].checked=false;
}
}
}
}
Para ello solamente tendremos que informar la acción onclick de cada elemento checkbox que queramos que se comporte así:
<input type="checkbox" name="Chk1" onclick="set_change(this)">
Archivado como APEX, web por josepcoves | 0 comments
A partir de la versión de APEX 3.1 si añadimos un texto en la casilla “Post Element” en ciertos elementos (checkboxes, popup lovs, etc.) veremos que el texto aparece debajo del elemento en lugar de aparecer a la derecha del elemento.
Esto es debido a un error en la especificación del CSS que define el fieldset. A partir de APEX 3.1 se ha cambiado la declaración de la clase del CSS. Según los de APEX esto no se cambiará de momento. Aquí va un workaround.
Voy a partir de un ejemplo en concreto (con el que me encontré el problema) vamos a añadir un icono para eliminar el valor de una Popup LOV. Para ello podemos añadir el siguiente código en el Post Element Text:
<img onclick="document.getElementById('#CURRENT_ITEM_NAME#_HIDDENVALUE').value='';
document.getElementById('#CURRENT_ITEM_NAME#').value=''" src="#IMAGE_PREFIX#delete.gif" alt="" />
Esto añadirá un icono con una X al lado del Popup-lov que nos permitirá eliminar el valor seleccionado. Si usamos APEX > 3.0 veremos como esta X aparece debajo del elemento en lugar de la derecha. Aquí esta el problema del CSS que he comentado. Para ello, debemos redeclarar la clase “lov”.
Añadimos el siguiente código en el HTML header de la página en concreto:
<style type="text/css">
.lov {
display:inline;
vertical-align:baseline;
}
</style>
Como veremos no quedará perfectamente alineado. Para ello podemos hacer una pequeña trampa y modifcar el Post Element Text y encapsular el código dentro de un SPAN con vertical-alignment:
<span style="vertical-align: middle;">
<img onclick="document.getElementById('#CURRENT_ITEM_NAME#_HIDDENVALUE').value='';
document.getElementById('#CURRENT_ITEM_NAME#').value=''" src="#IMAGE_PREFIX#delete.gif" alt="" />;
</span>
Más información en el post del foro de APEX:
http://forums.oracle.com/forums/thread.jspa?threadID=659658&start=0&tstart=0
Archivado como ASP, Networking, web por josepcoves | 0 comments
El otro día me encontré con este error (An error occurred on the server when processing the URL. Please contact the system administrator.) al intentar entrar en una página desarrollada en ASP. Curiosamente este error solamente se producía con firefox mientras que con IE la página funcionaba correctamente. Dado que la página a la que quería acceder era la de una entidad bancaria y sabiendo la poca seguridad de la que gozan los entornos windows, antes de abrir la página en Windows y exponerme a miles de troyanos, decidí investigar un poco para encontrar otra solución para poder ejecutar dicha página desde linux y con firefox.
Después de navegar un rato encontré la solución. Para aquellos que tengáis el complemento firebug instalado en vuestro firefox, debéis desactivarlo para quitaros de encima este error. Después de desactivar firebug la página se mostró perfectamente.
Espero que os sirva!
Archivado como Oracle, Oracle Portal, web por josepcoves | 0 comments
Cuando tenemos que recojer diversos valores de checkbox en un formulario HTML, normalmente nos encontramos con que el identificador del elemento HTML es el mismo, cosa que realiza una concatenación de valores por GET o POST con el mismo identificador. Algunos lenguajes de programación facilitan la recolección de dichos valores generando un array de valores (por ejemplo PHP). En el caso de PLSQL esta funcionalidad no está desarrollada por defecto, pero podemos escribir un código que nos realice la misma funcionalidad:
CREATE OR REPLACE PACKAGE pkg_checkboxes IS
TYPE chkArray IS TABLE OF VARCHAR2(100) INDEX BY BINARY_INTEGER;
PROCEDURE display_form;
PROCEDURE process_form(checkboxes IN VARCHAR2 DEFAULT NULL);
PROCEDURE process_form(checkboxes IN chkArray);
END pkg_checkboxes;
CREATE OR REPLACE PACKAGE BODY pkg_checkboxes IS
PROCEDURE display_form IS
BEGIN
htp.p('<html>');
htp.p('<head>');
htp.p('<title>Checkboxes Testing</title>');
htp.p('</head>');
htp.p('<body>');
htp.p('<form name="frmChk" method="post" action="cp_cpw_checkboxes.process_form">');
htp.p('<input type="checkbox" name="checkboxes" value="Japan" /> Japan
');
htp.p('<input type="checkbox" name="checkboxes" value="China" /> China
');
htp.p('<input type="checkbox" name="checkboxes" value="Russia" /> Russia
');
htp.p('<input type="checkbox" name="checkboxes" value="USA" /> USA
');
htp.p('<input type="checkbox" name="checkboxes" value="Canada" /> Canada
');
htp.p('
');
htp.p('<input type="submit" value="Submit" />');
htp.p('</form>');
htp.p('</body>');
htp.p('</html>');
END display_form;
PROCEDURE process_form(checkboxes IN VARCHAR2 DEFAULT NULL) IS
BEGIN
htp.p('You selected:
');
htp.p('
<ul>');
IF checkboxes IS NOT NULL THEN
htp.p('
<li>'||checkboxes||'</li>
');
ELSE
htp.p('
<li>No checkbox selected</li>
');
END IF;
htp.p('</ul>
');
END process_form;
PROCEDURE process_form(checkboxes IN chkArray) IS
BEGIN
htp.p('You selected:
');
htp.p('
<ul>');
FOR i IN 1..checkboxes.COUNT LOOP
htp.p('
<li>'||checkboxes(i)||'</li>
');
END LOOP;
htp.p('</ul>
');
END process_form;
END pkg_checkboxes;
(Código obtenido de http://www.joelennon.com/?q=pl-sql-checkboxes)
Archivado como javascript, web por josepcoves | 0 comments
Si os habéis encontrado alguna vez el problema de que en internet explorer al hacer una concatenación de un String con una variable no funciona correctamente mientras que en Netscape sí, aquí tenéis una solución:
en lugar de escribir el típico:
var b;
var c;
c = 'Mundo';
b = 'Hola '+c
podéis realizarlo del siguiente modo, entre paréntesis:
var b;
var c;
c = 'Mundo';
b = 'Hola '+ (c)
Cosa que curiosamente funciona a la perfección en IE… aquí tenemos otro de esos ejemplos en los que una cosa sencilla debería funcionar siempre, pero por culpa de los simpáticos de Microsoft ya tenemos un nuevo rompecabezas…
Archivado como web por josepcoves | 0 comments
Para obtener div con transparencias compatible en IE y Firefox podemos hacerlo añadiendo el el style del div las siguientes propiedades (suponiendo opacidad del 30%):
filter: opacity: 0.3;
-moz-opacity: 0.3
filter: alpha(opacity=30);
\
<div id="icono_print" style="position:absolute; width:0px; height:30px; left:593px; top:0px; filter: opacity: 0.3; -moz-opacity:0.3; filter: alpha(opacity=30);"\>
Archivado como javascript, web por josepcoves | 0 comments
La función a continuación hace zoom de una imagen que tiene como nombre identificador idImg un zoom de i%, un ejemplo de funcionamiento sería:
<img id="imagen1" xsrc="image.png" onClick="zoomImage('imagen1',120)">
FUNCTION zoomImage(idImg,i){
msie = navigator.appVersion.indexOf("MSIE")>0;
IF (msie){
objref.style.zoom = i+'%';
}
ELSE {
rx = objref.naturalWidth;
ry = objref.naturalHeight;
objref.width = (i*rx)/100;
objref.height = (i*ry)/100;
}
}