diff --git a/addons/web/static/src/core/colorpicker/colorpicker.js b/addons/web/static/src/core/colorpicker/colorpicker.js
index d387d3b13df..a6bb93647d2 100644
--- a/addons/web/static/src/core/colorpicker/colorpicker.js
+++ b/addons/web/static/src/core/colorpicker/colorpicker.js
@@ -502,8 +502,8 @@ export class Colorpicker extends Component {
_onChangeInputs(ev) {
switch ($(ev.target).data("colorMethod")) {
case "hex":
- this._updateHex(this.$el.find(".o_hex_input").val());
- break;
+ // Handled by the "input" event (see "_onHexColorInput").
+ return;
case "rgb":
this._updateRgba(
parseInt(this.$el.find(".o_red_input").val()),
@@ -525,4 +525,18 @@ export class Colorpicker extends Component {
this._updateUI();
this._colorSelected();
}
+ /**
+ * Called when the hex color input's input event is triggered.
+ *
+ * @private
+ * @param {Event} ev
+ */
+ _onHexColorInput(ev) {
+ const hexColorValue = ev.target.value.replaceAll("#", "");
+ if (hexColorValue.length === 6) {
+ this._updateHex(`#${hexColorValue}`);
+ this._updateUI();
+ this._colorSelected();
+ }
+ }
}
diff --git a/addons/web/static/src/core/colorpicker/colorpicker.xml b/addons/web/static/src/core/colorpicker/colorpicker.xml
index d69d3561c6c..6e71c7369db 100644
--- a/addons/web/static/src/core/colorpicker/colorpicker.xml
+++ b/addons/web/static/src/core/colorpicker/colorpicker.xml
@@ -19,7 +19,8 @@