Bonjour,
je suis en train de faire le tuto sur la taxonomie et lorsque j'appuie sur la touche entrée de mon clavier, mon post est publié comme si j'avais cliqué sur "submit".
La fonction e.keyCode ==13 ne fonctionne pas, même lorsqu'il fallait faire un "alert" pour afficher un message

input.keypress(function(e){
    if( e.keyCode == 13){
        var val = input.val(); 
        input.val(''); 
        $.get("<?php echo $url; ?>",{name:val,type:type},function(data){
            input.parent().after(data); 
        });
        return false;
    }
});

Faut-il configurer quelque-chose en particulier ? Je développe sur wamp.

9 réponses


Gwy2
Auteur
Réponse acceptée

Avec beaucoup de persévérance, j'ai trouvé la solution à mon problème :
j'ai changé ces 2 lignes : (suppression du $ et du .live)

jQuery(function($){
$('.delTaxo').live('click',function(e){

en

jQuery(function(){
$('.delTaxo').click(function(e){

par contre si je supprime le tag je viens de créer il me redirige vers une page qui affiche la fonction delete

Essayes ça :

input.keypress(function(e){
    if(e.which == 13) {
        var val = input.val(); 
        input.val(''); 
        $.get("<?php echo $url; ?>",{name:val,type:type},function(data){
            input.parent().after(data); 
        });
        return false;
    }
});
Gwy2
Auteur

Aucun changement, dès que je tape un taxonomy "test" et que j'appuie sur la touche entrée, mon formulaire est validé et le champs test n'est pas rajouté dans ma Base de données

Gwy2
Auteur

Le problème vient peut-être d'ailleurs car je viens de constater que je n'ai plus ma liste de tag dans mon admin_edit..

Salut,
Peux-tu me donner le code de admin_edit? Aussi vérifie ton cache. Il se peux que ton js soit caché par ton browser et donc n'applique pas les changement (j'ai eu le même problème avec chrome ya un moment de ça)

Gwy2
Auteur

Bonsoir,
Mon Jquesty est bien chargé mais entre 2 balises //<![CDATA[//]]>
Voici mon code admin_edit.

public function admin_edit($id = null) {
    if (!empty($this->request->data)) {
        if (!empty($this->request->data'Page']'id'])) {
            $this->request->data'Page']'type'] = 'page'; 
            $this->Page->id = $this->request->data'Page']'id']; 
            if ($this->Page->save($this->request->data)) {
                $this->Session->setFlash("La page a été ajoutée !","notif", array('type'=>'success'));
                $this->redirect(array('action' => 'index'));
            }
        }
    }
    /* MODULE PARENTS*/
        if (!empty($this->data)) {
            if($this->Page->save($this->data)==false)
                $this->Session->setFlash('Erreur dans l\'enregistrement de la page', "notif",array('type' => 'error'));
                $this->redirect(array('action'=>'index'));
            } else {
                $parents[0] = " No Parent ]";
                $Pagelist = $this->Page->generateTreeList(null,null,null,"|__");
                if($Pagelist)
                foreach ($Pagelist as $key=>$value)
                $parents$key] = $value;
                $this->set(compact('parents'));
            }
    /*FIN MODULE PARENT*/
        if ($id) {
            $this->request->data = $this->Page->find('first', array(
                'conditions' => array(
                    'Page.id' => $id),
                    'recursive' => 0
                ));
        } else {
            $this->request->data = $this->Page->getDraft(); 
        }
    }
}

Dans une version précédente j'avais un morceau de code qui envoyait les terms à ma vue :

$d'terms'] = $this->Page->getFixedTerms();
$this->set($d);
Gwy2
Auteur

Il y a du mieux, j'ai réussi à récupérer mes valeurs de taxonomy avec :

echo $this->Taxonomy->input('catégorie', array('label'=>'catégorie'));

Suite à mes essais j'ai modifié mon admin_edit et je ne récupérais plus mes valeurs à cause du récursive 0. Une grosse et lamentable erreur de ma part. Je reviens donc au stade 0 à savoir que la fonction jquery ne fonctionne pas.

Dès que je valide un ajout de taxonomy en appuyant sur entrée, mon post est validé
Lorsque je clique sur la X pour supprimer ma valeur, celle-ci se supprime, mais ma page se redirige vers la page /Terms/delete/id

Je ne connais pas grand chose en Jquery. est ce normal que mon code soit entre les balises //<![CDATA[//]]> ?

Gwy2
Auteur

Bonsoir,
Je reviens vers vous car je ne trouve toujours pas de solution à mon problème et je suis bien embêté. En reprenant mon code, je me rend compte que certain éléments peuvent interférer sur ma fonction en script. Ces 3 codes ne rechargent pas la page lors d'un clic.
Pourriez-vous essayé de m'aider car je ne connais pas le script. Je constate qu'il y a plusieurs fonction (e), je ne sais pas si ça peut poser problème.

Voici mon code dans l'HTML de la fonction qui ne marche toujours pas (et toujours avec les balises CDATA)

//<![CDATA[
        jQuery(function($){
            $('.delTaxo').live('click',function(e){
                var a = $(this);
                $.get(a.attr('href'));
                a.parent().fadeOut(); 
                return false; 
            });
            $('.addTaxo').each(function(){
                var input = $(this);
                var cache = {},lastXhr;
                var type = input.attr('id'); 
                input.autocomplete({
                    minLength:2,
                    source: function( request, response ) {
                        request.type = input.attr('id');
                        var term = request.term;
                        if ( term in cache ) {
                            response( cache[term] );
                            return;
                        }
                        lastXhr = $.getJSON( "/gaulenew/admin/taxonomy/Terms/search", request, function( data, status, xhr ) {
                            cache term ] = data;
                            if ( xhr === lastXhr ) {
                                response( data );
                            }
                        });
                    },
                    select : function(event, ui){
                        $.get('/gaulenew/admin/taxonomy/Terms/add/Post/160',{id:ui.item.id,name:ui.item.label,type:type},function(data){
                            input.parent().after(data);
                            input.val('');  
                        });
                    }
                });
                input.keypress(function(e){
                    if( e.keyCode == 13){
                        var val = input.val(); 
                        input.val(''); 
                        $.get("/gaulenew/admin/taxonomy/Terms/add/Post/160",{name:val,type:type},function(data){
                            input.parent().after(data); 
                        });
                        return false;
                    }
                });
            });
        })

//]]>

Voici un code script qui active permet d'avoir un menu slide

<script>
            $(document).ready(function(){
                $("#nav > li ").addClass("level1");
                $("#nav > li > ul > li ").addClass("level2");
                $("#nav > li > ul > li > ul > li ").addClass("level3");

                $(".level1").find(".arrow-right").attr("href","javascript:void(0);");
                $(".level1 > a").live("hover",function(e){
                    $("li").removeClass("menu_hover");
                    $(this).parent().addClass("menu_hover");
                    e.preventDefault();
                });
                $(".level1 a").live("click",function(){
                    $("li").removeClass("menu_hover");
                    if($(this).hasClass("sub_active")){
                        $(this).removeClass("sub_active");
                        $(".level1 > ul").slideUp();
                    }else{
                        $(".level1 ul").slideUp();
                        $(".level1 a").removeClass("sub_active");
                        $(this).addClass("sub_active");
                        $(this).parent().find("ul").slideDown();
                    }
                });
                $(".level2 a").live("hover",function(){
                    if(!($(this).parent().hasClass("accordian_element_hover"))){
                        $(this).parent().removeClass("level2").addClass("accordian_element_hover");
                    }
                });
                $(".accordian_element_hover a").live("hover",function(){
                    $(this).parent().addClass("level2").removeClass("accordian_element_hover");
                });

            });
        </script>

Et enfin mon code des flash qui fonctionne parfaitement :

<a href="#" class="close" onclick="$(this).parent().fadeOut('fast');">x</a>

Personne n'a pu resoudre ce problème. Dommage, moi aussi mon jquery ne marche pas (Exactement le meme probleme :( )