2008-09-05 12 views
6

Le demos pour la boîte de dialogue jquery ui utilise le thème "flore". Je voulais un thème personnalisé, j'ai donc utilisé le themeroller pour générer un fichier css. Quand je l'ai utilisé, tout semblait fonctionner correctement, mais plus tard, j'ai trouvé que je ne peux contrôler aucun élément d'entrée contenu dans la boîte de dialogue (c'est-à-dire, ne peut pas taper dans un champ de texte, ne peut pas cocher les cases). Une enquête plus approfondie a révélé que cela se produit si je mets l'attribut de dialogue "modal" à true. Cela n'arrive pas lorsque j'utilise le thème de la flore.Un problème avec la boîte de dialogue jquery lors de l'utilisation du camescope

Voici le fichier 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); 

Voici le code html qui utilise le thème de la flore:

<!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> 

Voici le code html qui utilise le thème ThemeRoller téléchargé:

<!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> 

Comme vous pouvez le constater, seuls les noms de fichier css et de classe référencés sont différents. Quelqu'un at-il une idée de ce qui pourrait être faux?

@David: Je l'ai essayé, et ça ne semble pas fonctionner (ni sur FF ni sur IE). J'ai essayé CSS en ligne:

style="z-index:5000" 

et je l'ai également essayé référence à un fichier CSS externe:

#SERVICE03_DLG{z-index:5000;} 

Mais aucun de ces travaux. Ai-je manqué quelque chose dans ce que vous avez suggéré?

Modifier:
Résoudre par brostbeef!
Comme j'utilisais initialement la flore, j'avais supposé à tort que je devais spécifier un attribut de classe. Il s'avère que ce n'est vrai que lorsque vous utilisez réellement le thème de la flore (comme dans les exemples). Si vous utilisez le thème personnalisé, la spécification d'un attribut de classe provoque ce comportement étrange.

+0

Avez-vous toujours ce problème ?? – MDCore

+0

Vous ne savez pas pourquoi vous avez supprimé votre code et les liens substitués ... qui sont maintenant cassés, donc impossible de faire référence. – clairestreb

+0

oups, totalement oublié à ce sujet. Je vais voir si je peux modifier le post pour ramener le code. – Ovesh

Répondre

3

Je pense que c'est parce que vous avez les classes différentes.
<div id="SERVICE03_DLG" class="flora"> (flore)
<div id="SERVICE03_DLG" class="ui-dialog"> (sur mesure)

Même avec le thème de la flore, vous auriez encore utiliser la classe ui-dialogue pour le définir comme une boîte de dialogue.

J'ai déjà fait des modaux et je n'ai même jamais défini de classe dans la balise. jQueryUI devrait prendre soin de cela pour vous. Essayez de vous débarrasser de l'attribut class ou de la classe "ui-dialog".

+0

Merci! Il s'avère que c'est en fait un problème avec la flore. Je vais modifier la question pour le refléter. – Ovesh

1

Après avoir joué avec ceci dans Firebug, si vous ajoutez un attribut z-index supérieur à 1004 à votre div par défaut, id de "SERVICE03_DLG", alors cela fonctionnera. Je lui donnerais quelque chose de très haut, comme 5000, juste pour être sûr.

Je ne suis pas sûr de ce que c'est dans le CSS themeroller qui provoque cela. Ils ont probablement changé ou négligé l'attribut de position de la cible div qu'il se transforme en un dialogue.

0

L'homme, c'est un bon. J'ai essayé de faire plein de choses sur ces deux pages. Avez-vous essayé de laisser le CSS complètement et d'essayer les deux pages alors? J'ai utilisé Firebug pour supprimer le CSS de l'en-tête sur les deux pages, et l'entrée fonctionnait encore sur l'un et pas sur l'autre - mais, je suis enclin à croire que Firebug ne supprime pas complètement le CSS du rendu, et vous obtiendra des résultats différents si vous le supprimez réellement du code.

J'ai également trouvé que vous pouvez coller du texte dans la zone de texte en utilisant la souris - il n'accepte tout simplement pas la saisie au clavier. Cependant, il ne semble pas y avoir de gestionnaire d'événements qui pourrait interférer avec cela.

1

J'ai essayé d'implémenter un thème de themeroller avec une boîte de dialogue et des onglets et il s'avère que le themeroller CSS ne fonctionne pas avec le jQuery officiel!Surtout pour le dialogue et les onglets, ils ont modifié les classes d'éléments des jquery officiels. Voir ici: http://filamentgroup.com/lab/introducing_themeroller_design_download_custom_themes_for_jquery_ui/

Commentaire d'un utilisateur:

3) le thème généré que je téléchargé semble être incomplètes - lorsque je tente d'utiliser mes onglets (qui travaillent avec la flore thème, le code identique à la documentation exemple) ne soit pas de style sous forme d'onglets

Après avoir couru en 3 Je croyais coincé et devrait revenir à l'aide « flore" ... J'ai découvert depuis par la lecture du code source de la « démo » fichier que si j'ajuster mon html et donner les < li> articles que je utilise pour mes onglets la « ui-Onglets- nav-item "classe alors il fonctionnera. Le thème généré par themeroller est donc malheureusement incomplet. Si les onglets sont incomplets, cela me demande de se demander quoi d'autre est incomplet. C'était était plutôt frustrant. :(

suivi par les développeurs ThemeRoller Commentaire:

3) Nous allons jeter un coup d'oeil. Vous avez raison que ces classes devraient être ajoutées par le plugin. Pour l'instant cependant, il est probable que ne ferait pas trop de mal à les ajouter à votre balisage afin que vous puissiez utiliser les thèmes de themeroller. Nous allons vérifier, cependant. Je pense que nos sélecteurs pourraient être basé sur le sélecteur parent-onglets parent à la place, mais je pense que nous essayions de ne pas utiliser d'éléments dans nos sélecteurs. Envisager il sur la liste de tâches

Questions connexes