The 22-year-old began his career with Staines Town before joining the Addicks, making his debut in 2016 and scoring 10 goals in 39 appearances last season.
Ibrox boss Steven Gerrard told the club website: “There were a lot of clubs in for Joe - he’s mobile, dynamic and can create and score goals. He is left-footed so will give us more balance in the midfield area.”