Bonjour,
J'imagine que ce que je cherche existe déjà, mais je n'arrive pas à le trouver.
Je cherche à faire un système de filtre instantané, comme sur ebay par exemple.
Mon projet est un catalogue. J'aimerais que sur la page index des articles, on puisse mettre des critères de recherche sans avoir à appuyer sur un bouton envoyer. J'imagine qu'il faut le faire via un paginate.
Je ne vous demande pas la solution toute crue dans le bec, mais au moins une piste que je puisse continuer de chercher.
Merci d'avance =)
Avec Jquery, tu vas faire une recherche des éléments en fonction de la valeur qui est coché.
Donc tu crées une requête ajax puis tu gère la réponse pour en suite afficher le résultat en pagination par exemple.
Je pense avoir trouvé un élément de réponse. J'ai un autre script jQuery dans mon layout, et qui ne marche pas pour cette page spécifique. Je vais chercher de ce côté là.
En enlevant cette ligne de ma page index.ctp, mon script sur le layout refonctionne, mais toujours pas celui de ma page. Je continue de chercher
<?php echo $this->Html->script('http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js', array('inline'=>false)); ?>
Problème résolu ! J'ai simplement mit mon script dans le même fichier que mes autres scripts jQuery et tout a été résolu. Merci à tous les deux pour vos pistes ! :D
Je viens de tomber sur le tuto sur la taxonomy, je ne l'avais jamais regardé parce que je ne savais pas ce que c'était, mais il semblerait que c'est ça. Je reviens vers vous, si j'ai un soucis ;)
Tutoriel très interressant, mais ce n'est pas vraiment ce que je voulais. Je suis alors ouverte à toutes idées.
Je vous remercie tous les deux. Je vais regarder ce tuto demain et je vous tiens au courant =)
Tuto très intéressant Je pense dans un premier temps changer mon idée, donc la faciliter et ne me servir que de ça. En suivant le tuto, j'ai fait deux trois modifications, par rapport à l'architecture de mon code. Mais, ça ne marche pas. J'ai essayé en dehors de cette application, le code marche. Si vous avez une idée du problème, peut être : index.ctp [code]
Articles
<label for="rec">Filtrer les produits :</label><input type="text" name="rec" id="recFilter" placeholder="Tapez votre recherche (exemple : T-shirt Hello Kitty Rose)">
<?php foreach ($goods as $good): ?> = $this->Html->link($this->Html->image('goods/'.$good['Good']['slug'].'.jpg')."".$good['Good']['name']."", array('controller' => 'goods', 'action' => 'view', $good['Section']['id']), array('class' => 'shortcut', 'escape' => false)); ?> <?php endforeach; ?>
= $this->Paginator->numbers(array('separator' => '')); ?>
<?php echo $this->Html->script('app', array('inline'=>false)); ?><?php echo $this->Html->script('http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js', array('inline'=>false)); ?>[/code] Et app.js : [code] (function($){ $('#recFilter').focus().keyup(function(event){ var input = $(this); var val = input.val(); // Si rien est tapé, on affiche tout if(val == ''){ $('#filter a').show(); $('#filter span').removeClass('highlighted'); return true; } // On construit l'expression à partir de ce qui est tapé (.*)e(.*)x(.*)e(.*)m(.*)p(.*)l(.*)e(.*) var regexp = '\b(.*)'; for(var i in val){ regexp += '('+val*+')(.*)'; } regexp += '\b'; $('#filter a').show(); // On parcourt chaque élément de la liste $('#filter').find('a>span').each(function(){ var span = $(this); var resultats = span.text().match(new RegExp(regexp,'i')); // le text match if(!resultats){ span.parent().hide(); } }) }); })(jQuery); [/code] Déjà le focus dans le champ ne se fait pas. Donc j'ai pensé que peut être il n'arrive pas à charger jQuery et donc n'exécute pas le code. Qu'en dites vous ? Merci encore pour vos réponses =)
J'ai fait un test :
(function($){
alert('jQuery est bien chargé !');
});
})(jQuery);
Ca marche. Donc visiblement, jQuery se charge. Du coup, je ne suis pas bien avancée...