11540 sujets

JavaScript, DOM et API Web HTML5

Bonsoir,
Je cherche à passer une valeur à une fonction Jquery lors d'un clic sur une balise a, plutot que de faire comme ceci:

<a onclick="Cart.addProduct(<?php echo $this->escape($data['categorie_id']); ?>, <?php echo $this->escape($data['products_id']); ?>, this);return false;" href="/cart/add/cat/<?php echo $this->escape($data['categorie_id']); ?>/id/<?php echo $this->escape($data['products_id']); ?>/qty/1">
	<img src="/images/button/add.png" alt="Ajouter au panier"/>
</a>
, c'est un lien Bouton pour ajouter en javascript un produit au panier.
Donc plutot que le onclick j'aimerais class="add-cart" mais comment passer les parametres (numero produit...) ?

Si je met des input de type hidden à l'intérieur de la balise a et que je récupère les values par JQuery, c'est conforme au norme w3c, pensez vous que c'est la solution ?

Merci
Modifié par alien7 (12 Jun 2009 - 23:52)
Salut,

personnellement je serais parti d'un vrai lien, ce qui permettrait le bon fonctionnement même si JavaScript est désactivé/indisponible :
<script type="text/javascript">
	$(function() {
		$(".add-cart").click(function () {
			var action = this.href.split(/(.+)action=([^&]+)/)[2];
			var id = this.href.split(/(.+)id=([^&]+)/)[2];
			alert('action : '+action+'\nid : '+id);
			return false;
		});
	});
</script> 
</head>
<body>
<a href="addcart.php?action=add&amp;id=33" class="add-cart">Ajouter au panier</a>
Oui j'avais déjà penser à récupérer les données via le lien en bricolant, mais je ne savais pas comment, je suis pas à l'aise avec les expressions régulières. Donc avec les inputs de type hidden c'est pas propre ? Dommage qu'il n'a pas une manière plus propres.

a écrit :
personnellement je serais parti d'un vrai lien, ce qui permettrait le bon fonctionnement même si JavaScript est désactivé/indisponible :

Bah mon lien marche comme ainsi même si Javascript est désactivé, regarde bien le href de a, j'ai bien un lien.


Merci pour ta réponse Heyoan
alien7 a écrit :
Bah mon lien marche comme ainsi même si Javascript est désactivé, regarde bien le href de a, j'ai bien un lien.
Ah oui : je n'avais pas scrollé à droite. Smiley smile
Hello,

C'est gentil de nous présenter un code PHP pour un problème de JavaScript. À coup sûr, devoir déchiffrer le code PHP et tenter de deviner ce qui est généré nous aidera à t'aider. Smiley ohwell

Mais sur le fond:
- Un INPUT de type hidden dans un lien, WTF?
- Si ton URL est correctement structurée, tu peux effectivement récupérer les infos nécessaires avec une expression rationnelle qui va bien.
- En HTML 5, tu pourrais aussi placer les infos nécessaires dans des attributs personnalisés. Par exemple data-category et data-product. En HTML 4 ou XHTML 1, par contre, ce sera invalide (sauf en XHTML 1 si tu fais du vrai XML avec espace de nom et tout).
Modifié par Florent V. (12 Jun 2009 - 14:33)
a écrit :
C'est gentil de nous présenter un code PHP pour un problème de JavaScript. À coup sûr, devoir déchiffrer le code PHP et tenter de deviner ce qui est généré nous aidera à t'aider

Oh j'suis sûr que ca pose problème à personne lol Smiley lol . Ok j'essayerai de faire attention la prochaine fois promis Smiley smile

Sinon pour le problème, bah j'ai opté pour le split('/');

Pour le html 5, c'est interressant, mais bon ca sera dans 10 ans qu'on pourra l'utiliser donc bon.

Merci bien pour vos réponses Smiley smile .
alien7 a écrit :
Pour le html 5, c'est interressant, mais bon ca sera dans 10 ans qu'on pourra l'utiliser donc bon.

Bah non, rien ne t'empêche de l'utiliser dès maintenant. Ceci dit j'attendrais plutôt que le brouillon d'HTML 5 soit achevé, ce qui devrait arriver cet automne. Ensuite HTML 5 sera sans doute une candidate recommandation d'ici 2012 (donc trois ans, pas 10).

HTML 5 est conçu pour être, dans l'ensemble, rétrocompatible. Tout ce qui n'est pas radicalement une nouvelle fonctionnalité a de bonnes chances de fonctionner dans les navigateurs (ou du moins de ne pas leur poser de problème particulier).

Donc pour une fonctionnalité de HTML 5, les questions à se poser sont:
- est-ce que cette fonctionnalité est susceptible de disparaitre dans les versions suivantes de la norme en cours de rédaction?
- est-ce que la fonctionnalité est un ajout de HTML 5, et si oui quels sont les navigateurs compatibles?
- est-ce que la fonctionnalité correspond à un comportement actuel des navigateurs, et si oui quels sont les navigateurs compatibles?

Dans le cas des attributs data-, il me semble que tous les navigateurs permettent de récupérer la valeur de tels attributs en JavaScript.
Modifié par Florent V. (13 Jun 2009 - 00:05)
Oui mais jusqu'a que tout le monde change de navigateur il se passera dix ans, cf IE6, après IE7, IE8 donc on sera obligé de développer pour ces navigateurs à la traine