4 votes

Définition du texte du bouton pour une boîte de dialogue jQuery UI

Tous les endroits où je définissais (avec succès) le texte du bouton jQuery UI Dialog ne fonctionnent plus. Les boutons apparaissent et fonctionnent correctement, cependant aucun texte n'est affiché dans tous les navigateurs testés (IE, Safari, Chrome, Firefox et Opera). En utilisant l'inspecteur de Chrome et Firebug, il semble que le texte ne soit même pas défini sur le bouton au lieu d'être un problème CSS).

La seule chose qui a récemment changé est que nous sommes passés à jQuery 1.8.0 avec jQuery UI 1.8.22 et nous ne sommes pas en mesure de revenir en arrière.

Un exemple réduit peut être trouvé sur jsFiddle http://jsfiddle.net/F7pGu/

HTML d'exemple:

    Blah

Test de tableau
Test d'objet

JavaScript d'exemple:

var $form = $('#form'),
    $arrTest = $('#array-test'),
    $objTest = $('#object-test');

$arrTest.click(function(){
    $form.dialog({
        buttons: [
            {
                text: 'Annuler'                
            },
            {
                text: 'Enregistrer'
            }
        ]
    });
});

$objTest.click(function(){
    $form.dialog({
        buttons: {
            'Annuler': function () {},
            'Enregistrer': function () {}
        }
    });
});

Je ne trouve rien de mal en lisant la documentation. Nous avons toujours utilisé la méthode object-test mais la documentation mentionne maintenant la méthode array-test à la place.

7voto

François Wahl Points 13752

J'ai effectué des recherches car c'est en effet un problème étrange. Il s'avère que c'est un problème connu et un suivi de bug a été créé à ce sujet.

Voici le suivi du bug expliquant le problème et la solution actuelle.

Pour plus de commodité, voici le lien direct vers le ticket lui-même qui a déjà été corrigé et devrait être inclus dans la version 1.8.23.

Ajouter la ligne de code suivante à votre script permettra de faire fonctionner à nouveau la boîte de dialogue :

if ( $.attrFn ) { $.attrFn.text = true; }

Voir DEMO

Voici également le message SO supplémentaire qui est lié dans le suivi de bug.

0voto

blasteralfred Ψ Points 7747

Une solution beaucoup plus simple est d'utiliser ce extrait après avoir inclus la bibliothèque jQuery :

if ( $.attrFn ) { $.attrFn.text = true; }

Ici est la fiddle corrigée qui fonctionne pour vous. J'espère que cela vous aidera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X