Custom form validation is missing
You're probably not printing something required by the form since you are printing items individually. To start debugging, you can comment your entire form twig out and just use {{ form }} and see if it triggers validation.

At the same time, you are copy pasting the wrong thing in each error case:

      $response-&gt;addCommand(new InvokeCommand('.form-email', 'css', array('border-bottom', '2px solid red')));
      $response-&gt;addCommand(new HtmlCommand('#email-valid', $text));


This will always apply to elements with .form-email class and #email-valid id.

You're trying to evaluate $lastname but that variable is never set. If the email validation error always shows, then validate that you are using the right key in $form_state-&gt;getValue().

Since you are applying it to the same id, you are going to overwrite your own message each time as well. Check the documentation on HtmlCommand. It implements jQuery's html(string):


  When .html() is used to set an element's content, any content that was
  in that element is completely replaced by the new content.


You need to provide different divs to print these errors for the users sake, or rethink how you are doing this.