       !obj.value
 
     if @unasnwered.length > 0
-      @mark_form_element_missing_required(obj) for obj in @unasnwered
-      @mark_form_missing_required()
+      if @required
+        @mark_form_element_missing_required(obj) for obj in @unasnwered
+        @mark_form_missing_required()
       return false
 
     @require_is_final()

    @save_indicator = SaveIndicator.instance()
    @intercept_navigation()
    @forms = []
    @prevent_forward_navigation_count = 0
    if $('.live_submit').length
      $('.live_submit').each (i,e) =>
        @forms.push(new SaveOnChange($(e),@))


  is_answered: () ->
    @mark_form_clean()
    data = @$form.serializeArray()
    @data = data.filter (obj) ->
      obj.name in CompleteChecker.FieldNames

    if @data.length == 0 # multiple choices
      @mark_form_missing_required() if @required
      return false

    @mark_form_element_clean(obj) for obj in @data
