2010-04-21 4 views
1

J'ai un tag sur ma page avec une valeur.Jquery Apache - Problème IE

<button class='btn' value='value'>show value</button> 

Je possède ce code jquery:

$('.btn').click(function() { 
    var w = 'value = '+$(this).val()+'/text = '+$(this).html(); 
    alert(w); 
}); 

En FF, pas de problème, le résultat est correct (affichage: = valeur/text = valeur d'exposition).
Le problème vient avec IE8 qui affiche des résultats différents de mon serveur de test et du serveur de production. Le serveur de test est mon ordinateur local avec une installation XAMPP standard. Le serveur de production est un serveur basé sur Linux avec Apache, PHP et MySQL.

Le résultat du serveur de test est correct (affichage comme FF), le résultat du serveur de production n'est pas bon (affichage: value = show value/text: show value).

Quelqu'un une idée si c'est apache qui provoque l'erreur? Je sais qu'il y a quelques problèmes avec l'utilisation de val() car IE considère cela comme un attribut et non comme une valeur. Le problème est que changer le jQuery de val() en attr ('value'), c'est quitter beaucoup de travail (cette implémentation est déjà sur beaucoup de pages) et je pense qu'il pourrait être beaucoup plus facile de changer quelque chose sur le serveur web.

+1

C'est un problème connu avec IE, regardez ceci http://www.w3schools.com/tags/tag_button.asp – Lazarus

Répondre

0

Il s'agit d'un problème connu côté client avec IE, je ne peux pas expliquer correctement les différences entre les serveurs, d'autres choses pour dire que vous testez avec les mêmes navigateurs et versions.

From W3C:

Important: Si vous utilisez l'élément de bouton dans un formulaire HTML, les différents navigateurs soumettront des valeurs différentes. Internet Explorer soumettra le texte entre les balises <button> et </button>, tandis que les autres navigateurs soumettront le contenu de l'attribut value. Utilisez l'élément input pour créer des boutons dans un formulaire HTML.

La meilleure façon d'obtenir un comportement cohérent (à part .attr('value'), que je fortement recommande) de c'est de remplacer votre bouton avec:

<input type="submit" class='btn' value='value' /> 

Malheureusement, cela ne vous donne pas l'affichage valeur, si vous aviez un bouton proxy que vous pouvez obtenir le même effet que le bouton, il est compliqué, mais il fait le travail IE:

<input type="button" class='btnPoxy' value='show value' /> 
<input type="submit" class='btn' value='value' style='display: none;' /> 

jQuery pour cela:

$(".btnProxy").click(function() { 
    $(this).next(".btn").click(); 
});