What I miss being mentioned is the bit where you told your employer that you spent $300 that you cannot get back, and your employer said to you "bad luck, not my problem".
Does your employer actually know about your cost? Many employers would think "I know Chelsie took two days off, but I'd like her to be there, so I ask her to come in, and if that causes a problem, she will tell me and we sort it out somehow". If you complained let's say in half a year's time how you lost $300, your employer might be totally astonished about this and say "but why didn't you say something?"
On the other hand an employer might have a sudden, totally unexpected need for you to be there, and if you told him about your tickets might say "sorry, but we really, really need you here on those days, so write down any cost that you have, don't forget anything, put it on expenses, and I will personally make sure it will all be paid for".
So the first thing is to inform the employer (or the manager, or whoever is responsible) and negotiate. If in your opinions unreasonable demands are made by your manager, you go to the next level or to HR and complain - your manager's attitude and his manager's attitude might be different.
If you can't come to an agreement, consider that the money you get out of your employment is less than one would think based on your official salary, so you might look for a position elsewhere.
Whether your employer has the legal right to cancel your holiday doesn't really matter, as long as he knows that you will be very unhappy if it happens, and you can quit if you don't like it, and he can cancel your employment if he doesn't like it.