Foros del Web » Programando para Internet » Jquery »

Problemas varios con JQuery

Estas en el tema de Problemas varios con JQuery en el foro de Jquery en Foros del Web. Hola chicos Os expongo una serie de problemas que a priori parecen sencillos de solucionar, somos novatos con JQuery y no sabemos solucionar, a ver ...
  #1 (permalink)  
Antiguo 19/05/2011, 12:54
 
Fecha de Ingreso: febrero-2010
Mensajes: 15
Antigüedad: 14 años, 10 meses
Puntos: 0
Problemas varios con JQuery

Hola chicos

Os expongo una serie de problemas que a priori parecen sencillos de solucionar, somos novatos con JQuery y no sabemos solucionar, a ver si no podéis echar una manilla.

Problema 1


Se trata de que cuando pasamos de una pantalla a otra, en la transición, aparece durante unos segundos menús que hemos realizado con JQuery, en concreto son Modal Panel que salen de manera emergente si seleccionas una determinada opción, pensamos que es debido a algo relacionado con el refresco entre pantallas o que debemos de poner oculto la capa que representa el modal panel de JQuery, pero no sabemos como hacerlo.

Imagen

http://s3.subirimagenes.com:81/otros/previo/thump_6423438problema-21.jpg

http://s3.subirimagenes.com:81/otros/previo/thump_6423447problema-22.jpg

Problema 2

Esto más bien es una duda más que un problema, queremos saber si tras seleccionar una opción de un desplegable se puede lanzar una ventana emergente a través de JQuery, de la misma manera que lo hacemos cuando hacemos clic en un boton, yendo al grano es si hay un evento .que se por ejemplo on_change() o algo parecido que detecte el cambio de estado en el desplegable y si éste toma una determinada opción que aparezca la ventana emergente.

Imagen

http://s2.subirimagenes.com/otros/previo/thump_6423470problema-1.jpg

Problema 3

El último problema es que realizamos una pantalla que tiene una serie de tabs, dentro de un tab seleccionado se encuentra un div (1) que a su vez contiene dos divs (2) y (3), la cosa es que vemos que el div padre (1) que contiene a los otros dos debería contenerlos según el código escrito pero a la hora de representarlo no es así, parece como que flotasen los divs, es cierto que floto los dos divs interiores (2) y (3) pero no el div que reune a los 2 que sería (1), por tanto (1) debería verse dentro del recuadro de tabs dibujado con una línea azul.

Imagen

http://s2.subirimagenes.com/otros/previo/thump_6423520problema-3.jpg


Gracias por las molestías

Saludos

Última edición por Cambotero; 19/05/2011 a las 13:00
  #2 (permalink)  
Antiguo 19/05/2011, 13:06
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 7 meses
Puntos: 344
Respuesta: Problemas varios con JQuery

El problema 1 no lo entiendo. No se ven muy bien las imágenes.

El segundo problema. Si se puede, puedes utilizar el evento click en un option del select o el evento change en el select en general.

El tercer problema parece más algo de CSS que de JQuery, pero habría que ver el código para poder opinar.
  #3 (permalink)  
Antiguo 26/05/2011, 09:04
 
Fecha de Ingreso: febrero-2010
Mensajes: 15
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Problemas varios con JQuery

Gracias por las respuestas

Decir que hemos resuelto los problemas 2 y 3 como bien decías el problema 3 estaba relacionado con estilos.

Lo único que nos queda por solucionar es el problema 1 a la hora de cargar el contenido de un tab, que refresca mal la pantalla, os adjunto un par de imagenes para que podáis ver en detalle lo que nos sucede.

Imagen 1:

http://imageshack.us/photo/my-images/21/problemarefresco1.jpg/

Imagen 2:

http://imageshack.us/photo/my-images/718/problemarefresco2.jpg/

En la primera imagen podemos ver el contenido si se hace clic en Editar Perfil que mediante JQuery sale esa ventana emergente.

En la segunda imagen podemos ver que si hacemos clic en Cargar partida, mostramos una venteana emergente para seleccionar la partida a cargar, antes de que lo cargue nos aparece durante un segundo la ventana de Editar perfil de modo alargado que ocupa toda la pantalla y luego ya sale la pantalla con la partida cargada.

A ver si algún compañero le ha pasado algo parecido y nos puede dar alguna solución.

Gracias
  #4 (permalink)  
Antiguo 26/05/2011, 09:22
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 7 meses
Puntos: 344
Respuesta: Problemas varios con JQuery

Para poder ver que problema hay, habría que ver el código.
Sólo con los pantallas no se puede saber.
  #5 (permalink)  
Antiguo 26/05/2011, 11:13
 
Fecha de Ingreso: febrero-2010
Mensajes: 15
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Problemas varios con JQuery

No te asustes


Este es el código que tenemos, dentro de él tenemos el código que se encarga de representar las pestañas (tabs), las ventanas emergentes (dialog) y slider.

Te ponemos todo porque creemos que cualquiera de lso componentes puede afectar.

<head>

<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<LINK REL=StyleSheet HREF= "estilos/estilos.css" TYPE="text/css" MEDIA=screen>
<link type="text/css" href="jqueryTabs/css/start/jquery-ui-1.8.11.custom.css" rel="stylesheet" />
<link rel="stylesheet" href="jquerySlider/css/start/jquery-ui-1.8.11.custom.css">
<script src="jquerySlider/development-bundle/jquery-1.5.1.js"></script>
<script type="text/javascript" src="jqueryTabs/js/jquery-1.5.1.min.js"></script>
<script type="text/javascript" src="jqueryTabs/js/jquery-ui-1.8.11.custom.min.js"></script>
<script src="jqueryTabs/development-bundle/external/jquery.bgiframe-2.1.2.js"></script>
<script src="jqueryTabs/development-bundle/ui/jquery.ui.core.js"></script>
<script src="jqueryTabs/development-bundle/ui/jquery.ui.widget.js"></script>
<script src="jqueryTabs/development-bundle/ui/jquery.ui.mouse.js"></script>
<script src="jqueryTabs/development-bundle/ui/jquery.ui.button.js"></script>
<script src="jqueryTabs/development-bundle/ui/jquery.ui.draggable.js"></script>
<script src="jqueryTabs/development-bundle/ui/jquery.ui.position.js"></script>
<script src="jqueryTabs/development-bundle/ui/jquery.ui.resizable.js"></script>
<script src="jqueryTabs/development-bundle/ui/jquery.ui.dialog.js"></script>
<script src="jqueryTabs/development-bundle/ui/jquery.effects.core.js"></script>
<script src="jqueryTabs/development-bundle/ui/jquery.effects.blind.js"></script>
<script src="jqueryTabs/development-bundle/ui/jquery.effects.bounce.js"></script>
<script src="jqueryTabs/development-bundle/ui/jquery.effects.explode.js"></script>
<script src="jquerySlider/development-bundle/ui/jquery.ui.slider.js"></script>
<link rel="stylesheet" href="jquerySlider/development-bundle/demos.css">
<style>
#demo-frame > div.demo { padding: 10px !important; };
label, input { display:block; }
input.text { margin-bottom:12px; width:95%; padding: .4em; font-size: 15px; }
fieldset { padding:0; border:0; margin-top:25px; }
h1 { font-size: 1.2em; margin: .6em 0; }
.ui-dialog .ui-state-error { padding: .3em; }
.validateTips { border: 1px solid transparent; padding: 0.3em; }
</style>
<script type="text/javascript">
$(function(){
<%
if (nombres_palanca != null){
%>

//AQUI CREAMOS SLIDERS DE MANERA DINAMICA
var tam_ini = <%=rango_ini.size()%>
var tam_fin = <%=rango_fin.size()%>
var array_ini = new Array(tam_ini);
var array_fin = new Array(tam_fin);
var array_valores_game = new Array(tam_ini);
<%int l;
for(l=0; l< rango_ini.size(); l++){
%>
array_ini[<%=l%>]= "<%=rango_ini.elementAt(l)%>";
array_fin[<%=l%>]= "<%=rango_fin.elementAt(l)%>";
array_valores_game[<%=l%>]= "<%=valores_game.elementAt(l)%>";
<%
}
%>
var indiceTS = <%=indice_ts%>
var indeceFT = <%=indice_ft %>
var i=0;
for (i;i<<%=nombres_palanca.size()%>;i++){
if ((i != indiceTS) && (i != indeceFT)){
$( "#"+i+"-div" ).slider({
orientation: "horizontal",
range: "min",
min: array_ini[i],
max: array_fin[i],
value: array_valores_game[i],
step: 0.1,
slide: function( event, ui) {
var n = document.getElementById("slider").value;
$( "#"+n+"-input" ).val( ui.value );
}
});
$( "#"+i+"-input" ).val( $( "#"+i+"-div" ).slider( "value" ) );
}
}
<%
}
%>

// CREACIÓN DE LOS TABS
$('#tabs').tabs();
<%
if (indice_li != null){
%>
var n = <%=li%>;
$('#tabs').tabs("select", n);
<%
}
%>
$('#graficasSimulacion').tabs();
<%
if (indice_li_graficas != null){
%>
var m = <%=li_graficas%>;
$('#graficasSimulacion').tabs("select", m);
<%
}
%>

$( "#dialog:ui-dialog" ).dialog( "destroy" );

var login = $( "#login" ),
name = $( "#name" ),
apellido = $( "#apellido" ),
email = $( "#email" ),
clave = $( "#clave" ),
allFields = $( [] ).add( login ).add( name ).add( apellido ).add( email ).add( clave ),
tips = $( ".validateTips" );

var name2 = $( "#name2" ),
allFields = $( [] ).add( name2 ),
tips = $( ".validateTips" );

function updateTips( t ) {
tips
.text( t )
.addClass( "ui-state-highlight" );
setTimeout(function() {
tips.removeClass( "ui-state-highlight", 1500 );
}, 500 );
}

$( "#dialog-form" ).dialog({
autoOpen: false,
height: 530,
width: 350,
modal: true,
buttons: {
"Modificar": function() {
var bValid = true;
allFields.removeClass( "ui-state-error" );

bValid = bValid && checkLength( login, "Usuario", 1);
bValid = bValid && checkLength( name, "Nombre", 1);
bValid = bValid && checkLength( apellido, "Apellido", 1);
bValid = bValid && checkmail( email, "Email", 1);
bValid = bValid && checkNombre( login );

if ( bValid ) {
document.perfil.submit();
$( this ).dialog( "close" );
}
},
Cancelar: function() {
$( this ).dialog( "close" );
}
},
close: function() {
allFields.val( "" ).removeClass( "ui-state-error" );
}
});

$( "#dialog-form2" ).dialog({
autoOpen: false,
height: 430,
width: 350,
modal: true,
buttons: {
"Guardar": function() {
var bValid = true;
allFields.removeClass( "ui-state-error" );

bValid = bValid && checkLength( name2, "Nombre", 1);
bValid = bValid && checkPartida( name2 );

if ( bValid ) {
document.guardar.antiguo.value = "<%=datos_usuario.elementAt(0) %>";
document.guardar.submit();
$( this ).dialog( "close" );
}
},
Cancelar: function() {
$( this ).dialog( "close" );
}
},
close: function() {
allFields.val( "" ).removeClass( "ui-state-error" );
}
});

$( "#dialog-form3" ).dialog({
autoOpen: false,
height: 430,
width: 350,
modal: true,
buttons: {
"Cargar": function() {
var i = 0;
var entro = false;
for (i;i<document.cargar.radio.length;i++){
entro = true;
if (document.cargar.radio[i].checked){
document.cargar.partida.value = i;
}
}
if (!entro){
document.cargar.partida.value = 0;
}
allFields.removeClass( "ui-state-error" );
document.cargar.antiguo.value = "<%=datos_usuario.elementAt(0) %>";
document.cargar.submit();
$( this ).dialog( "close" );
},
Cancelar: function() {
$( this ).dialog( "close" );
}
},
close: function() {
allFields.val( "" ).removeClass( "ui-state-error" );
}
});

$( "#dialog-form4" ).dialog({
autoOpen: false,
height: 430,
width: 350,
modal: true,
buttons: {
"Ver": function() {
var i = 0;
var entro = false;
for (i;i<document.ver.radio2.length;i++){
entro = true;
if (document.ver.radio2[i].checked){
document.ver.partida.value = i;
}
}
if (!entro){
document.ver.partida.value = 0;
}
allFields.removeClass( "ui-state-error" );
document.ver.antiguo.value = "<%=datos_usuario.elementAt(0) %>";
document.ver.submit();
$( this ).dialog( "close" );
},
Cancelar: function() {
$( this ).dialog( "close" );
}
},
close: function() {
allFields.val( "" ).removeClass( "ui-state-error" );
}
});

$( "#opener" )
.button()
.click(function() {
$( "#dialog-form" ).dialog( "open" );
});

$( "#opener2" )
.button()
.click(function() {
$( "#dialog-form2" ).dialog( "open" );
});

$( "#openerCargar" )
.button()
.click(function() {
$( "#dialog-form3" ).dialog( "open" );
});

$( "#openerVer" )
.button()
.click(function() {
$( "#dialog-form4" ).dialog( "open" );
});

$( "#opener3" )
.button()
.click(function() {
document.guardar.antiguo.value = "<%=datos_usuario.elementAt(0) %>";
document.guardar.submit();
return false;
});

$( "#opener4" )
.button()
.click(function() {
document.simulacion.antiguo.value = "<%=datos_usuario.elementAt(0) %>";
document.simulacion.action = 'Controlador_volver_a_jugar';
document.simulacion.submit();
return false;
});

$( "#opener5" )
.button()
.click(function() {
document.simulacion.antiguo.value = "<%=datos_usuario.elementAt(0) %>";
document.simulacion.boton.value = "simular";
document.simulacion.submit();
return false;
});

$( "#opener6" )
.button()
.click(function() {
document.simulacion.antiguo.value = "<%=datos_usuario.elementAt(0) %>";
document.simulacion.boton.value = "simular_todo";
document.simulacion.submit();
return false;
});

$("#tabs ul.tabs li:eq(1) a").addClass("activo").show();
});


</script>
<style type="text/css">
#dialog_link {padding: .4em 1em .4em 20px;text-decoration: none;position: relative;}
#dialog_link span.ui-icon {margin: 0 5px 0 0;position: absolute;left: .2em;top: 50%;margin-top: -8px;}
ul#icons {margin: 0; padding: 0;}
ul#icons li {margin: 2px; position: relative; padding: 4px 0; cursor: pointer; float: left; list-style: none;}
ul#icons span.ui-icon {float: left; margin: 0 4px;}
</style>
<script type="text/javascript">
  #6 (permalink)  
Antiguo 26/05/2011, 11:13
 
Fecha de Ingreso: febrero-2010
Mensajes: 15
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Problemas varios con JQuery

//CON ESTA FUNCIÓN AÑADIMOS DATOS AL DIALOG PERFIL DE JQUERY
function pon_perfil(){
<%
if (datos_usuario != null){
%>
document.perfil.antiguo.value = "<%=datos_usuario.elementAt(0)%>";
var clave = "<%=datos_usuario.elementAt(4)%>";
document.perfil.login.value = "<%=datos_usuario.elementAt(0)%>";
document.perfil.name.value = "<%=datos_usuario.elementAt(1)%>";
document.perfil.apellido.value = "<%=datos_usuario.elementAt(2)%>";
document.perfil.email.value = "<%=datos_usuario.elementAt(3)%>";
if (clave != null){
document.perfil.clave.value = clave;
}else{
document.perfil.clave.value = "";
}
var tam = <%=partidas.size()%>
var vector_js = new Array(tam);
<%
int m;
for(m=0;m<partidas.size();m++){
%>
vector_js[<%=m%>] = "<%=partidas.elementAt(m)%>";
<%
}
%>
//Creación de los checkbox que mostraran las partidas actuales
//para la sala seleccionada. Se crearán de manera dinámica
elemento = document.getElementById('perfil');
//Elimina los datos creados en caso de haber creado algo para que cada
//vez que invoco esta función solo haya unos datos a la vez
quitaSalto = document.getElementById('salto');
quitaTabla = document.getElementById('tabla_js');
if (quitaSalto){
padre = quitaSalto.parentNode;
padre.removeChild(quitaSalto);
}
if (quitaTabla){
padre = quitaTabla.parentNode;
padre.removeChild(quitaTabla);
}
//Creación de los elementos
tabla = document.createElement("table");
tabla.align = 'center';
tabla.id= 'tabla_js';
var j=0;
for (j;j<vector_js.length;j++){
fila = document.createElement("tr");
columna1 = document.createElement("td");
columna2 = document.createElement("td");
columna2.align = 'left';
ele = document.createElement("input");
ele.type = 'checkbox';
ele.name= j+"-partida";
columna1.appendChild(ele);
var text = document.createTextNode(vector_js[j]);
columna2.appendChild(text);
tabla.appendChild(fila);
fila.appendChild(columna1);
fila.appendChild(columna2);
}
br = document.createElement("br");
br.id= 'salto';
elemento.appendChild(br);
elemento.appendChild(tabla);
<%
}
%>
}


</script>
</head>


Saludos y gracias por las molestias
  #7 (permalink)  
Antiguo 26/05/2011, 12:58
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 7 meses
Puntos: 344
Respuesta: Problemas varios con JQuery

Es mucho código para mirar y el problema es que no se puede probar. Lo mejor sería que revisaseis con Firebug (extensión de Firefox) si os está dando algún error de javascript y en caso de que no, podéis ir depurando el programa paso a paso para ver si encontráis donde está el error.
  #8 (permalink)  
Antiguo 02/06/2011, 11:26
 
Fecha de Ingreso: febrero-2010
Mensajes: 15
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Problemas varios con JQuery

Hemos encontrado la causa del problema, resulta que tenemos un script en medio del código que se ejecuta siempre y que dibuja una gráfica de google (el código os lo adjunto en la parte inferior) nos hemos dado cuenta de que si quitamos dicho código todo va perfecto.

A ver si hay alguna manera de que se ejecute al final o después de jquery, para que así no nos aparezca este problema de refresco.

<div align="center">Variable <%=salidas.elementAt(i)%> medida en <%=unidades_salidas.elementAt(i) %></div>
<div id="<%=i %>"></div>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable();
data.addColumn('string', 'Year');
data.addColumn('number', '<%=salidas.elementAt(indice) %>');
var n = <%=valores_graficas.elementAt(indice).size() %>;
data.addRows(n);
<%
for (int j=0;j<valores_graficas.elementAt(indice).size();j+ +){
%>
data.setValue(<%=j %>, 0, '<%=j %>');
data.setValue(<%=j %>, 1, <%=valores_graficas.elementAt(indice).elementAt( j) %>);
<%
}
%>

var chart = new google.visualization.LineChart(document.getElement ById('<%=i %>'));
chart.draw(data, {width: 700, height: 240, backgroundColor: "#FFFFFF"});
}
</script>
<%
}else{
if (representacion.elementAt(i).compareTo("Reloj") == 0){

%>
<%=salidas.elementAt(i) %>
<div id="<%=i %>" align="center">
</div>

<script type='text/javascript'>
google.load('visualization', '1', {packages:['gauge']});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable();
data.addColumn('string', 'Label');
data.addColumn('number', 'Value');
data.addRows(1);
data.setValue(0, 0, '');
data.setValue(0, 1, <%=valores_graficas.elementAt(i).lastElement()%> );

var chart = new google.visualization.Gauge(document.getElementById ('<%=i %>'));
var options = {width: 450, height: 170, redColor: '#FF0000', redFrom: <%=rango_colores.elementAt(i).elementAt(1) %>, redTo: <%=rango_colores.elementAt(i).elementAt(2) %>,
yellowColor: '#FFFF00', yellowFrom: <%=rango_colores.elementAt(i).elementAt(0) %>, yellowTo: <%=rango_colores.elementAt(i).elementAt(1) %>, minorTicks: 5,
greenColor: '#00FF00', greenFrom: <%=minimos.elementAt(i) %>, greenTo: <%=rango_colores.elementAt(i).elementAt(0) %>, min: <%=minimos.elementAt(i) %>, max:<%=maximos.elementAt(i) %>};
chart.draw(data, options);
}
</script>
<%

Saludos

Etiquetas: Ninguno
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 17:42.