2008-09-05 16 views
6

El demos para el diálogo jquery ui utiliza el tema "flora". Quería un tema personalizado, así que usé themeroller para generar un archivo css. Cuando lo usé, todo parecía funcionar bien, pero más tarde descubrí que no puedo controlar ningún elemento de entrada contenido en el cuadro de diálogo (es decir, no puedo escribir en un campo de texto, no puedo marcar las casillas de verificación). Investigaciones posteriores revelaron que esto sucede si establezco el atributo de diálogo "modal" en verdadero. Esto no sucede cuando uso el tema de flora.Problema con el cuadro de diálogo jquery al utilizar themeroller css

Aquí está el archivo JS:

topMenu = { 
    init: function(){ 
     $("#my_button").bind("click", function(){ 
      $("#SERVICE03_DLG").dialog("open"); 
      $("#something").focus(); 
     }); 

     $("#SERVICE03_DLG").dialog({ 
      autoOpen: false, 
      modal: true, 
      resizable: false, 
      title: "my title", 
      overlay: { 
       opacity: 0.5, 
       background: "black" 
      }, 
      buttons: { 
       "OK": function() { 
        alert("hi!"); 
       }, 
       "cancel": function() { 
        $(this).dialog("close"); 
       } 
      }, 
      close: function(){ 
       $("#something").val(""); 
      } 
     }); 
    } 
} 

$(document).ready(topMenu.init); 

Aquí es el HTML que utiliza el tema de la flora:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> 
<title>sample</title> 
<script src="jquery-1.2.6.min.js" language="JavaScript"></script> 
<link rel="stylesheet" href="flora/flora.all.css" type="text/css"> 
<script src="jquery-ui-personalized-1.5.2.min.js" language="JavaScript"></script> 
<script src="TopMenu.js" language="JavaScript"></script> 
</head> 
<body> 

<input type="button" value="click me!" id="my_button"> 
<div id="SERVICE03_DLG" class="flora">please enter something<br><br> 
<label for="something">somthing:</label>&nbsp;<input name="something" id="something" type="text" maxlength="20" size="24"> 
</div> 

</body> 
</html> 

Aquí está el código HTML que utiliza el tema ThemeRoller descargado:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> 
<title>sample</title> 
<script src="jquery-1.2.6.min.js" language="JavaScript"></script> 
<link rel="stylesheet" href="jquery-ui-themeroller.css" type="text/css"> 
<script src="jquery-ui-personalized-1.5.2.min.js" language="JavaScript"></script> 
<script src="TopMenu.js" language="JavaScript"></script> 
</head> 
<body> 

<input type="button" value="click me!" id="my_button"> 
<div id="SERVICE03_DLG" class="ui-dialog">please enter something<br><br> 
<label for="something">somthing:</label>&nbsp;<input name="something" id="something" type="text" maxlength="20" size="24"> 
</div> 

</body> 
</html> 

Como puede ver, solo los nombres de clases y archivos css mencionados son diferentes. ¿Alguien tiene una pista sobre qué podría estar mal?

@David: Lo probé, y parece que no funciona (ni en FF ni en IE). Probé CSS en línea:

style="z-index:5000" 

y también he intentado hacer referencia a un archivo CSS externo:

#SERVICE03_DLG{z-index:5000;} 

Pero ninguno de estos trabajos. ¿Me estoy perdiendo algo de lo que sugirió?

Editar:
Resuelva por brostbeef!
Como originalmente estaba usando flora, había asumido erróneamente que tenía que especificar un atributo de clase. Resulta que esto solo es cierto cuando realmente usa el tema de flora (como en las muestras). Si usa el tema personalizado, especificar un atributo de clase provoca ese comportamiento extraño.

+0

¿Sigues teniendo este problema? – MDCore

+0

No estoy seguro de por qué eliminó su código y los enlaces sustituidos ... que ahora están rotos por lo que no se puede hacer referencia. – clairestreb

+0

oops, se olvidó por completo de eso. Veré si puedo editar la publicación para recuperar el código. – Ovesh

Respuesta

3

Creo que es porque tiene las clases diferentes.
<div id="SERVICE03_DLG" class="flora"> (flora)
<div id="SERVICE03_DLG" class="ui-dialog"> (personalizado)

Incluso con el tema de la flora, a pesar de ello utilizar la clase ui-diálogo para definirlo como un cuadro de diálogo.

He hecho modales antes y nunca he definido una clase en la etiqueta. jQueryUI debería encargarse de eso por ti.

Intenta deshacerte del atributo de clase o usa la clase "ui-dialog".

+0

¡Gracias! Resulta que esto es realmente un problema con la flora. Editaré la pregunta para reflejarla. – Ovesh

1

Después de jugar con esto en Firebug, si agrega un atributo z-index mayor que 1004 a su div predeterminado, id de "SERVICE03_DLG", entonces funcionará. Le daría algo extremadamente alto, como 5000, solo para estar seguro.

No estoy seguro de qué es lo que causa esto en themeroller CSS. Probablemente hayan cambiado o descuidado el atributo de posición del div de destino que se convierte en un diálogo.

0

Hombre, esta es una buena idea. He intentado hacer un montón de cosas en estas dos páginas. ¿Has intentado simplemente dejar el CSS por completo y probar ambas páginas? Utilicé Firebug para eliminar el CSS del encabezado en ambas páginas, y la entrada todavía funcionaba en una y no en la otra, pero me inclino a creer que Firebug no elimina completamente el CSS de la representación y usted Obtendrás resultados diferentes si realmente lo eliminas del código.

También encontré que puede pegar texto en el cuadro de texto con el mouse, simplemente no acepta la entrada del teclado. Sin embargo, no parece haber ningún controlador de eventos que interfiera con esto.

1

He intentado implementar un tema themeroller con un diálogo y pestañas y resulta que themeroller CSS no funciona con jQuery oficial!Especialmente para el diálogo y las pestañas, modificaron las clases de elementos de los jquery oficiales. Ver aquí: http://filamentgroup.com/lab/introducing_themeroller_design_download_custom_themes_for_jquery_ui/

comentario de un usuario:

3) el tema generada que descargado parece ser incompleta - cuando intento usarlo mis pestañas (que funcionan con la flora tema, código idéntico al ejemplo de documentación ) no consiga labrado en forma de fichas

haber corrido en 3 pensé que era atascado y tendría que volver usando “flora" ... Desde entonces he descubierto por leer el código fuente del archivo ‘demo’ que si ajusto mi html y dar los < li> artículos que estoy usando para mis pestañas el “ui-tabs- nav-item "class then funcionará.

El tema generado por themeroller es por lo que desafortunadamente está incompleto. Si las pestañas están incompletas, me pregunto qué más está incompleto. Es fue bastante frustrante. :(

seguido por los desarrolladores ThemeRoller Comentario:

3) Vamos a echar un vistazo a eso. Tiene razón en que las clases se deben agregar con el complemento. Sin embargo, por ahora, probablemente no le haría mucho daño simplemente agregarlos a su marcado para que pueda usar los temas demerder. Sin embargo, lo comprobaremos. Creo que nuestros selectores podrían ser basados ​​en el selector de ui-tabs padre en su lugar, pero creo que estábamos tratando de no usar elementos en nuestros selectores. Considere en la lista de tareas

Cuestiones relacionadas