diff --git a/API.md b/API.md index 22272a0..d1e338d 100644 --- a/API.md +++ b/API.md @@ -120,7 +120,7 @@ Whenever the form becomes valid the "onValid" handler is called. Use it to chang #### onInvalid() ```html - + ``` Whenever the form becomes invalid the "onInvalid" handler is called. Use it to for example revert "onValid" state. diff --git a/src/Mixin.js b/src/Mixin.js index dd886b0..12a2d8c 100644 --- a/src/Mixin.js +++ b/src/Mixin.js @@ -38,7 +38,8 @@ module.exports = { _isPristine: true, _pristineValue: this.props.value, _validationError: '', - _externalError: null + _externalError: null, + _formSubmitted: false }; }, getDefaultProps: function () { @@ -138,6 +139,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) );