Mr Trump, 69, avoided serving in Vietnam, receiving four student deferments from military service between 1964 and 1968.
His comments were booed by the audience.
Republicans quickly distanced themselves from the divisive billionaire.
First was Rick Perry, who tweeted his disapproval 32 minutes after the comments were made.
The other candidates were quick to follow.
And Mr McCain's daughter Meghan said she was "disgusted".
A defiant Mr Trump refused to back down, despite the furore.
"In addition to doing a lousy job in taking care of our Vets, John McCain let us down by losing to Barack Obama in his run for President!" he said.
Mr Trump then gave a news conference, defending his comments and trying to clarify his remarks. He also posted a strident defence of his statements on Facebook.
"If a person is captured, they're a hero as far as I'm concerned. I don't like the job John McCain is doing in the Senate because he is not taking care of our veterans."
Mr Trump said he avoided service in the Vietnam War through student deferments and a medical deferment, then said he didn't serve because "I was not a big fan of the Vietnam war." He added he wasn't a protester.