In generale, required funziona solo se il browser fa i controlli previsti dalle specifiche HTML5. A me risulta che solo Chrome li faccia, ad oggi. In particolare poi non so come funzioni di preciso con le select. Per il browser, ogni valore della lista che gli hai dato è equivalente, quindi ce ne sarà sempre uno selezionato.