Haley a joué dans de nombreux films, notamment Damnation Alley, Le Jour de la sauterelle de John Schlesinger et Losin’ It, ainsi que des rôles invités à la télévision. Acteur enfant bien connu, il a joué le rôle de Kelly Leak dans la comédie The Bad News Bears. Il a également joué dans The Bad News Bears dans Breaking Training et The Bad News Bears Go to Japan.
Il a joué le rôle de Moocher dans le film acclamé de Peter Yates en 1979, Breaking Away, puis dans la série télévisée éphémère du même nom. Tout au long des années 1970, il a souvent joué un inadapté dur, colérique, boutonneux et aux cheveux longs ; bien que dans son premier long métrage, le film décalé de 1972, The Outside Man, il jouait Eric, un garçon apparemment si désespérément seul qu’il tente d’impressionner l’assassin de la mafia qui le retient en otage avec sa mère (Georgia Engel). Haley a également tourné un pilote pour une version américaine de la comédie britannique populaire The Young Ones intitulée Oh, No ! Pas eux ! En 1974, il a joué le rôle de Norm, un enfant inadapté, dans le 12e épisode de la série pour enfants du samedi matin, Shazam ! On raconte qu’en 1984, Johnny Depp, l’ami de Haley, l’a accompagné aux auditions du film A Nightmare on Elm Street de Wes Craven ; au lieu que Haley soit choisi pour un rôle, c’est Depp qui a été repéré par le réalisateur Craven, qui lui a demandé s’il voulait lire pour un rôle. Haley avait initialement auditionné pour le rôle de l’antagoniste du film, Freddy Krueger, mais a fini par perdre au profit de Robert Englund pour la version 1984 du film.
La carrière d’acteur de Haley est restée en sommeil pendant la majeure partie des années 1990 et le début des années 2000, lorsqu’il a déménagé à San Antonio, et s’est finalement tourné vers la réalisation, trouvant le succès en tant que producteur et réalisateur de publicités télévisées.
Avec la recommandation de Sean Penn, Haley est revenu à la comédie en 2006, apparaissant d’abord dans All the King’s Men de Steven Zaillian aux côtés de Penn dans le rôle de Sugar Boy, son garde du corps, avant de donner une performance acclamée par la critique dans le rôle d’un délinquant sexuel récemment libéré sur parole dans Little Children de Todd Field. Il a déclaré que sa préparation pour le rôle a été grandement influencée par la relation partagée entre sa mère et son frère True, qui a lutté contre une dépendance à l’héroïne avant de mourir d’une overdose. Haley a été nommé à l’Oscar du meilleur second rôle pour cette interprétation et a été invité en 2007 à rejoindre l’Académie des arts et des sciences du cinéma.
Haley possède une société de production, JEH Productions, à San Antonio. En 2008, il apparaît dans Semi-Pro et joue dans Créatures ailées avec Kate Beckinsale, Guy Pearce et Dakota Fanning. En 2009, il est également à l’affiche de Watchmen, l’adaptation par Zack Snyder du roman graphique d’Alan Moore, dans le rôle de Rorschach, un justicier masqué qui cherche à découvrir l’identité d’un tueur de héros costumé, un rôle qui a valu à Haley les éloges de nombreux critiques. Le film l’a également réuni avec sa co-star de Little Children, Patrick Wilson, qui jouait Nite Owl II, ancien partenaire de Rorschach. Toujours en 2010, Haley est apparu dans Shutter Island, réalisé par Martin Scorsese, jouant un patient d’un hôpital pour les fous criminels.
Haley a joué le rôle de Freddy Krueger dans le remake de A Nightmare on Elm Street. Il a signé pour jouer le rôle dans trois volets de la série.
Haley était un régulier de la série Human Target en tant que Guerrero, un allié du personnage principal, Christopher Chance. La série a été créée le 17 janvier 2010 sur Fox, et a duré deux saisons avant d’être annulée en mai 2011.
Il a joué Willie Loomis dans l’adaptation cinématographique de 2012 de Dark Shadows, réalisée par Tim Burton, et a joué le vice-président des États confédérés Alexander H. Stephens dans Lincoln, réalisé par Steven Spielberg. Il a joué le super-vilain « The Terror » dans le reboot de The Tick par Amazon.