diff --git a/src/Mixin.js b/src/Mixin.js index 811cd74..3205efb 100644 --- a/src/Mixin.js +++ b/src/Mixin.js @@ -36,7 +36,8 @@ module.exports = { _isPristine: true, _pristineValue: this.props.value, _validationError: '', - _externalError: null + _externalError: null, + _formSubmitted: false }; }, getDefaultProps: function () { @@ -137,6 +138,9 @@ module.exports = { isPristine: function () { return this.state._isPristine; }, + isFormSubmitted: function () { + return this.state._formSubmitted; + }, isRequired: function () { return !!this.props.required; }, diff --git a/src/main.js b/src/main.js index cd95804..f6208b7 100644 --- a/src/main.js +++ b/src/main.js @@ -74,6 +74,11 @@ Formsy.Form = React.createClass({ }.bind(this), 0); }, + resetForm: function () { + this.setFormPristine(true); + this.resetModel(); + }, + // Update model, submit to url prop and send the model submit: function (event) { @@ -190,11 +195,16 @@ Formsy.Form = React.createClass({ var inputs = this.inputs; var inputKeys = Object.keys(inputs); + this.setState({ + _formSubmitted: !isPristine + }) + // Iterate through each component and set it as pristine // or "dirty". inputKeys.forEach(function (name, index) { var component = inputs[name]; component.setState({ + _formSubmitted: !isPristine, _isPristine: isPristine }); }.bind(this)); @@ -398,7 +408,7 @@ Formsy.Form = React.createClass({ return React.DOM.form({ onSubmit: this.submit, - className: this.props.className + className: this.props.className }, this.traverseChildrenAndRegisterInputs(this.props.children) );