diff --git a/packages/react-form-renderer/src/form-renderer/enhanced-on-change.js b/packages/react-form-renderer/src/form-renderer/enhanced-on-change.js
index b7fe0ac9e..e690e032e 100644
--- a/packages/react-form-renderer/src/form-renderer/enhanced-on-change.js
+++ b/packages/react-form-renderer/src/form-renderer/enhanced-on-change.js
@@ -4,10 +4,17 @@ import { dataTypes } from '../constants';
* Pick a value from event object and returns it
* @param {Object|Any} event event value returned from form field
*/
-const sanitizeValue = event =>
- (typeof event === 'object' && event.target && event.target.value)
- ? event.target.value
- : event;
+const sanitizeValue = event => {
+ if (typeof event === 'object' && event.target) {
+ if (event.target.type === 'checkbox') {
+ return event.target.checked;
+ }
+
+ return event.target.value;
+ }
+
+ return event;
+};
/**
* Casts string true/false to boolean
diff --git a/packages/react-form-renderer/src/tests/form-renderer/__snapshots__/array-form-component.test.js.snap b/packages/react-form-renderer/src/tests/form-renderer/__snapshots__/array-form-component.test.js.snap
index 5a6373c91..f68dbf91b 100644
--- a/packages/react-form-renderer/src/tests/form-renderer/__snapshots__/array-form-component.test.js.snap
+++ b/packages/react-form-renderer/src/tests/form-renderer/__snapshots__/array-form-component.test.js.snap
@@ -622,12 +622,12 @@ exports[`renderForm function should render array field correctly 1`] = `
}
validate={Array []}
>
-
-
-
-
+
+
diff --git a/packages/react-form-renderer/src/tests/form-renderer/__snapshots__/render-form.test.js.snap b/packages/react-form-renderer/src/tests/form-renderer/__snapshots__/render-form.test.js.snap
index 097670f25..4f73ef342 100644
--- a/packages/react-form-renderer/src/tests/form-renderer/__snapshots__/render-form.test.js.snap
+++ b/packages/react-form-renderer/src/tests/form-renderer/__snapshots__/render-form.test.js.snap
@@ -1742,12 +1742,12 @@ exports[`renderForm function should render array field 1`] = `
}
validate={Array []}
>
-
-
-
-
+
+
diff --git a/packages/react-form-renderer/src/tests/form-renderer/enhanced-on-change.test.js b/packages/react-form-renderer/src/tests/form-renderer/enhanced-on-change.test.js
new file mode 100644
index 000000000..cb1242a38
--- /dev/null
+++ b/packages/react-form-renderer/src/tests/form-renderer/enhanced-on-change.test.js
@@ -0,0 +1,29 @@
+import enhancedOnChange from '../../form-renderer/enhanced-on-change';
+
+describe('#enhancedOnChange', () => {
+ it('should return value directly if event is not passed', () => {
+ const value = 'foo';
+ expect(enhancedOnChange(undefined, value => value, value)).toEqual('foo');
+ });
+
+ it('should return value from event if input is of type checkbox', () => {
+ const value = {
+ target: {
+ type: 'checkbox',
+ value: 'not me',
+ checked: false,
+ },
+ };
+ expect(enhancedOnChange(undefined, value => value, value)).toEqual(false);
+ });
+
+ it('should return value from event', () => {
+ const value = {
+ target: {
+ value: 'Me',
+ checked: 'not me',
+ },
+ };
+ expect(enhancedOnChange(undefined, value => value, value)).toEqual('Me');
+ });
+});