title: Avoid showing error messages while getting the value from TForm.getValue()
body: <p>I have 2 textboxes</p>
  
  <ul>
  <li>Email </li>
  <li>Password</li>
  </ul>
  
  <p>I want to disable the button until the user enters valid email and password. So, in the onChange method, I retrieve the value from <code>form.getValue()</code> which triggers validation as stated in the docs. If the value is <code>null</code>, I change the button's disabled state to <code>true</code> else <code>false</code>. I only want to show errors when the input loses focus or on submit and not on each <code>getValue()</code> call.</p>
  
  <p>As soon as <code>onChange</code> is triggered, the form starts showing error in all the fields because I call <code>form.getValue()</code>. I want to show the error only when the user moves to the next textbox (focus is lost from the current one) or if the user hits Submit. I don't wanna pester him with error messages when the user just starts typing in the textbox.</p>
  
  <p><strong>Steps to reproduce</strong></p>
  
  <ul>
  <li>Create 2 form fields (email and password with refinements) with
  option containing error messages</li>
  <li>Retrieve the value in the onChange method</li>
  <li>You'll start seeing error messages.</li>
  </ul>
  
  <p><strong>Code</strong></p>
  
  <pre><code>// @flow
  import React, { PureComponent } from 'react';
  import { View, Text, Platform, TouchableHighlight } from 'react-native';
  import t from 'tcomb-form-native';
  import { resetTo } from 'src/lib/navigation';
  import { SIGNED_IN } from 'src/routes/constants';
  import { getErrorMessage } from 'src/lib/auth-helpers';
  import { FullScreenBGImage } from 'src/components';
  import { text, background } from 'src/styles/';
  import LoginBG from '../../../assets/images/login-bg.jpg';
  import styles from './style';
  
  type Props = {
    loggedIn: boolean,
    navigation: Object,
    login: (string, string) =&gt; void,
    user: Object,
  };
  
  type States = {
    isDisabled: boolean,
    value: ?Object,
  };
  
  const Email = t.refinement(t.String, email =&gt; {
    const reg = /[a-z0-9!#$%&amp;'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&amp;'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/;
    return reg.test(email);
  });
  
  const { Form } = t.form;
  
  // here we define our domain model
  const LoginForm = t.struct({
    email: Email,
    password: t.String,
  });
  
  const textboxStyle = {
    color: text.color2,
    backgroundColor: background.color1,
    fontSize: 17,
    height: 50,
    paddingVertical: Platform.OS === 'ios' ? 7 : 0,
    paddingHorizontal: 16,
    borderWidth: 1,
    marginBottom: 5,
  };
  
  const formStylesheet = {
    ...Form.stylesheet,
    textbox: {
      normal: {
        ...textboxStyle,
      },
      error: {
        ...textboxStyle,
      },
    },
    errorBlock: {
      color: text.error,
    },
  };
  
  const formOptions = {
    auto: 'placeholders',
    fields: {
     email: { error: 'Enter valid email' },
      password: {
        error: 'Enter valid password'
        password: true,
        secureTextEntry: true,
      },
    },
    stylesheet: formStylesheet,
  };
  
  class Login extends PureComponent&lt;Props, States&gt; {
    loginForm: ?Object;
    onFormChange: () =&gt; void;
  
    static navigationOptions = {
      header: null,
    };
  
    constructor(props: Props) {
      super(props);
  
      this.loginForm = {};
  
      this.state = {
        value: null,
        isDisabled: true,
      };
  
      this.handleSubmit = this.handleSubmit.bind(this);
      this.onFormChange = this.onFormChange.bind(this);
    }
  
    /**
     * ComponentWillReceiveProps.
     *
     * Redirect if user is logged in
     */
    componentWillReceiveProps(nextProps: Props) {
      if (nextProps.loggedIn !== this.props.loggedIn &amp;&amp; nextProps.loggedIn) {
        resetTo(SIGNED_IN, nextProps.navigation);
      }
    }
  
    handleSubmit = () =&gt; {
      // use that ref to get the form value
      const value = this.loginForm ? this.loginForm.getValue() : null;
  
      if (value) {
        this.props.login(value.email, value.password);
      }
    }
  
    onFormChange() {
      const value = this.loginForm ? this.loginForm.getValue() : null;
  
      if (value) {
        this.setState({
          value,
          isDisabled: false,
        });
      }
    }
  
    render() {
      const errorMessage = getErrorMessage(this.props.user);
      const error = errorMessage
        ? &lt;View&gt;&lt;Text style={styles.errorMessage}&gt;{errorMessage}&lt;/Text&gt;&lt;/View&gt;
        : null;
  
      return (
        &lt;View style={styles.container}&gt;
          &lt;FullScreenBGImage imageSrc={LoginBG} styles={styles.bgImage}&gt;
            &lt;View style={styles.logo}&gt;
              &lt;Text style={styles.logoLabel}&gt;VERUS&lt;/Text&gt;
            &lt;/View&gt;
  
            &lt;View style={styles.loginForm}&gt;
              {error}
              &lt;Form
                ref={c =&gt; { this.loginForm = c; }}
                type={LoginForm}
                value={this.state.value}
                onChange={this.onFormChange}
                options={formOptions} // pass the options via props
              /&gt;
  
              &lt;TouchableHighlight
                style={styles.button}
                onPress={this.handleSubmit}
                underlayColor="#99d9f4"
                disabled={this.state.isDisabled}
              &gt;
                &lt;Text style={styles.buttonText}&gt;Sign In&lt;/Text&gt;
              &lt;/TouchableHighlight&gt;
            &lt;/View&gt;
          &lt;/FullScreenBGImage&gt;
        &lt;/View&gt;
      );
    }
  }
  
  export default Login;
  </code></pre>
  
  <p><strong>Version</strong></p>
  
  <p>tcomb-form-native v0.6.11</p>