2009-02-20 5 views
2

Lors de l'utilisation de plusieurs éléments de bouton dans un formulaire, j'ai réalisé que IE7 envoie le innerHTML au lieu de la valeur du bouton. Tout bien que je pensais, je vais simplement changer mon code PHP à ceIE 6 et les multiples éléments de bouton envoyant tous leur nom et leurs valeurs

<?php 

if (isset($_POST['button-name'])) { 
    add_product_to_cart(2); 
} 

?> 

Maintenant mon vieil ami IE6 va un peu plus loin d'être une nuisance. Il envoie tous les éléments du bouton, quel que soit celui sur lequel je clique. Par exemple, j'ai 3 éléments de bouton nommés 'mint', 'near-mint' & 'standard'. Un rapide print_r($_POST) me dit que les 3 noms ont été soumis.

Je suppose que pour remédier à cela, il y aura du JavaScript, pas la situation la plus élégante, mais je peux imaginer que l'utilisateur moyen utilisant toujours IE6 n'est pas assez brillant pour éteindre leur JavaScript.

Comment puis-je y remédier?

+0

Pouvez-vous poster une partie du code HTML du formulaire? –

+0

@Darryl: Je pourrais mais c'est inutile. C'est un problème connu. Je cherchais un moyen de gérer les serveurs avec PHP (impossible) alors je me demandais comment je pouvais manipuler le côté client avant qu'il ne soit envoyé. – alex

Répondre

3

J'ai trouvé une solution à http://www.codecomments.com/JavaScript/message756646.html

Tout le crédit à l'auteur sur cette page.

Par demande, voici le code

function buttonfix(){ 
var buttons = document.getElementsByTagName('button'); 
for (var i=0; i<buttons.length; i++) { 
buttons[i].onclick = function() { 
for(j=0; j<this.form.elements.length; j++) 
if(this.form.elements[j].tagName == 'BUTTON') 
this.form.elements[j].disabled = true; 
this.disabled=false; 
} 
} 
} 
window.attachEvent("onload", buttonfix); 
+1

Vous devez publier le code que vous avez utilisé afin que les gens qui Google cette page sera en mesure de trouver votre solution. (La page que vous avez liée ne peut pas durer éternellement.) – titaniumdecoy

0

Une solution est d'utiliser <input type="button"> et <input type="submit"> dans votre page au lieu de <button type="button"> et <button>.

Mise à jour: si vous changez vos button éléments à input éléments vous devriez être en mesure de les trouver en utilisant jQuery avec le sélecteur suivant:

var buttons = $('input[type=submit], input[type=button]'); 
+0

Sauf que j'avais 4 boutons. – alex

+0

Comment 4 boutons peuvent-ils poser problème? –

+0

Parce que j'ai besoin de savoir exactement lequel a été cliqué. – alex

Questions connexes