The carjacker got away with the vehicle but was captured about two hours later after a chase and standoff.
The driver was stopped at a red light about 7:30 a.m. Sunday and thought the man approaching the vehicle was a panhandler, Sgt. Brent Mak said Monday.
Instead the man brandished a knife, and the two began struggling. Mak said the driver, still in his seatbelt, kicked the carjacker in the groin and grabbed his knife hand.
But, Mak said, the van rolled and hit a rock that closed the door on the driver's left leg, causing "extensive broken bones."
Mak had no word Monday on the man's condition. Police didn't identify him.
Officers said they chased the vehicle and the driver pulled over, but for about 90 minutes he refused to get out. Officers eventually used a stun gun to detain him, Mak said.
Mak described the driver, who was not identified, as a military veteran who stays in shape.
"Our suspect kind of picked the wrong guy to prey on," Mak said.
Police booked 26-year-old Christopher Cody Willard on robbery and other charges. They say it isn't clear exactly where he lives, but he appears to be from California. He was held on $2 million bail.