Prioritet provjera je backend pa frontend. Što znači kakvu god provjeru napravila JS-om (ili HTML atributom) to se vrlo lako mimoidje. Bez backend provjere ne računaj da provjera postoji.
Nisam se susret’o da required atribut ne funkcioniše osim ako nije dinamički uklonjen.
Isto, umjesto required="required" stavi samo required
<input id="company" class="form-control" type="text" name="company" placeholder="Upišite naziv tvrtke" required>