2009-09-25 8 views
0

J'ai écrit un code qui me permettra d'avoir du texte grisé sur un formulaire de saisie, et lorsque l'utilisateur se concentrera dessus, le texte disparaîtra et deviendra non grisé, si logique ...onfocus & onblur ne fonctionne pas dans IE

function editableAlt (elem, colour1, colour2) { 
    var elem = document.getElementById(elem); 
    elem.onfocus = function() { 
     if(this.value == this.defaultValue) { 
      this.value = ""; // remove the default text, so the user can enter their own 
      this.style.color = "#" + colour1; // change the text colour 
     } 
    }; 
    elem.onblur = function() { 
     if(this.value == '') { 
      this.value = this.defaultValue; // user left it blank? revert back to the default text 
      this.style.color = "#" + colour2; // and change the colour back too 
     } 
    } 
} 

Cela fonctionne sur la plupart des pages, mais un pour une raison quelconque le onfocus et onblur ne fonctionnent pas du tout - si je le change par exemple, il déclenche onclick aucun problème.

Y at-il autre chose que je peux essayer? :(J'utilise JQuery, mais la suppression qui ne semble pas affecter du tout.

Vive

+0

Travaux dans mon IE6: http://jsbin.com/aduni Tu fais . quelque chose de mal ailleurs dans votre code –

+0

de Merci, j'ai même essayé cela en utilisant Jquery en vain: \t \t si (. $ ("# Absence_Hours") longueur> 0) { \t \t \t $ this = $ (this) // Cache la variable \t \t \t this.focus $ (function() { \t \t \t \t alert ('test'); \t \t \t}); Changer le focus() pour cliquer() fonctionne bien ... – Nick

Répondre

3

J'ai trouvé que IE est extrêmement impitoyable quand il vient à des erreurs javascript. J'ai couru à travers votre code JSLint et a les erreurs suivantes:


erreur: problème à la ligne 2 caractère 14:. 'ELEM' est déjà défini

var elem = document.getElementById(elem); 

probl em à la ligne 10 caractère 23: Utilisez '===' pour comparer avec ''.

if(this.value == '') { 

Problème à la ligne 14 caractère 6: Point-virgule manquant.

} 

global Implicite: Document 2


Ne pas essayer de lésiner sur aider votre ou quoi que ce soit, mais je devine si vous corriger ces erreurs, vous verrez des résultats plus souhaitables. Bonne chance!

+0

Oh, bon spot - merci inkedmn! Ça te dérange si je te demande ce que tu as utilisé pour déboguer ça? Je n'ai pas eu une erreur dans IE ou Firebug. Merci – Nick

+1

http: // jslint.com est votre meilleur ami (à côté de Firebug) lors du débogage de javascript, en particulier lorsque les choses ne font que casser dans IE. Il a sauvé mon bacon d'innombrables fois. – inkedmn

+0

Super site, merci! – Nick

0

Quel idiot, désolé les gars! J'ai essayé de supprimer tous les autres fichiers Javascript, mais manqué le plus important était qu'il était enveloppé dans PHP et IE si les déclarations, d'oh!

Suckerfish sfFocus était appliquée qui a causé sa rupture: http://htmldog.com/articles/suckerfish/shoal/

Désolé :(& merci beaucoup pour les suggestions

Questions connexes