diff --git a/src/client/app/common/views/components/page-editor/page-editor.input.vue b/src/client/app/common/views/components/page-editor/page-editor.input.vue
index 1f3754252b..4e13840439 100644
--- a/src/client/app/common/views/components/page-editor/page-editor.input.vue
+++ b/src/client/app/common/views/components/page-editor/page-editor.input.vue
@@ -43,6 +43,13 @@ export default Vue.extend({
 	created() {
 		if (this.value.name == null) Vue.set(this.value, 'name', '');
 		if (this.value.inputType == null) Vue.set(this.value, 'inputType', 'string');
+
+		this.$watch('value.inputType', t => {
+			if (this.value.default != null) {
+				if (t === 'number') this.value.default = parseInt(this.value.default, 10);
+				if (t === 'string') this.value.default = this.value.default.toString();
+			}
+		});
 	},
 });
 </script>
diff --git a/src/client/app/common/views/components/ui/input.vue b/src/client/app/common/views/components/ui/input.vue
index 645062df28..a841ecca11 100644
--- a/src/client/app/common/views/components/ui/input.vue
+++ b/src/client/app/common/views/components/ui/input.vue
@@ -184,7 +184,11 @@ export default Vue.extend({
 			this.v = v;
 		},
 		v(v) {
-			this.$emit('input', v);
+			if (this.type === 'number') {
+				this.$emit('input', parseInt(v, 10));
+			} else {
+				this.$emit('input', v);
+			}
 
 			if (this.withPasswordMeter) {
 				if (v == '') {