         args = arguments
         template = getTemplate(@template)
         onSubmit = formArgs.onSubmit
+
+        # Prevent change events in the inputs during loading from submitting the form until
+        # the doc promise is resolved and the form is considered loaded.
+        return false if Q.isPending(Form.whenLoaded(template))
+
         result = onSubmit?.apply(@, args)
         callback = => template.settings.onSubmit?.apply(@, args)
         deferCallback(result, callback)

      before:
        insert: (doc) ->
          template = getTemplate(@template)
          # Prevent change events in the inputs during loading from submitting the form until
          # the doc promise is resolved and the form is considered loaded.
          return false if Q.isPending(Form.whenLoaded(template))

        update: (modifier) ->

      _.each Form.getDocs(template), (doc) ->
        df = Q.defer()
        promises.push(df.promise)
        Form.getCollection().update doc._id, modifier, Promises.toCallback(df)
      Q.all(promises).then(
        -> context.done()
        (err) -> context.done(err)
