v 10.0 v 11.0 v 12.0 Third Party 1983
Download for v 12.0 Deploy on Odoo.sh
Lines of code 85
Technical Name inputmask_widget
Also available in version v 10.0 v 11.0
You bought this module and need support? Click here!
Lines of code 85
Technical Name inputmask_widget
Also available in version v 10.0 v 11.0

Inputmask Widget

Based on jquery.inputmask 3.x Docs in GitHub.

An Inputmask Widget helps the user with the input by ensuring a predefined format.
This can be useful for dates, numerics, phone numbers, ...


  • Just add attribute widget="mask" and data-inputmask[-<attribute>]="<value>" to <field /> on form, tree and kanban

    Some examples:

    <field widget="mask" data-inputmask="'alias': 'date'" name="name" />
    <field widget="mask" data-inputmask="'mask': '99/99/9999'" name="name" />
    <field widget="mask" data-inputmask="'mask': '99-aa-**-AA-&amp;&amp;-##'" name="name" />
    <field widget="mask" data-inputmask="'mask': '9', 'repeat': 10, 'greedy' : false" name="name" />


    <field widget="mask" data-inputmask-alias="date" name="name" />
    <field widget="mask" data-inputmask-mask="99/99/9999" name="name" />
    <field widget="mask" data-inputmask-mask="99-aa-**-AA-&amp;&amp;-##" name="name" />
    <field widget="mask" data-inputmask-mask="9" data-inputmask-repeat="10" data-inputmask-greedy="false" name="name" />

    Note: Use contenteditable="true" for apply mask in others HTML tags: span, div, etc. Improve

  • Just add attribute widget="mask_regex" and data-inputmask[-regex]="<value>" to <field />

    With the regex extension you can use any regular expression as a mask. Currently this does only input restriction. There is no further masking visualization.

    Example email validation:

    <field widget="regex_mask" data-inputmask-regex="[a-zA-Z0-9._%-]+@[a-zA-Z0-9-]+\.[a-zA-Z]{2,4}" name="name"/>
  • Widgets names use:

    mask:CharField Only
    integer_mask:IntegerField in development...
    float_mask:FloatField in development...
    regex_mask:CharField Only
    monetary_mask:in development...
  • Masking definition:

    9:Numeric value
    a:Alphabetical value
    *:Alphanumeric value
    A:Alphabetical uppercasing
    &:Alfanumeric uppercasing - (Use &amp; for escape & in XML file)
  • Attributes:

    mask:The mask to use.
    repeat:Mask repeat function. Repeat the mask definition x-times.
    greedy:Toggle to allocate as much possible or the opposite. Non-greedy repeat function.
    placeholder:Change the mask placeholder. Default: "_"
    autounmask:Automatically unmask the value when retrieved. Default: false.
     *Remove the mask before submitting the form.Default: false
     Remove the empty mask on blur or when not empty removes the optional trailing part Default: true
    insertmode:Toggle to insert or overwrite input. Default: true.
     Clear the incomplete input on blur.
    alias:The alias to use.
  • Aliases:

    Some aliases found in the extensions are: email, currency, decimal, integer, date, datetime, dd/mm/yyyy, url, ip, etc.


    • Date and Datetime
    • Numeric
    • Regex
    • Phone
    • Other

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author, please use the developer contact information. They can usually be found in the description.
Please choose a rating from 1 to 5 for this module.
good work
El mehdi EL OUALI
on 10/30/19, 6:53 PM

restart odoo service before module Install good work

Not Working
Usman Farzand
on 11/19/21, 4:41 AM
<xpath expr="//field[@name='phone']" position='attributes'>
<attribute name='attrs'>{"widget":"mask", "data-inputmask":"'mask': '99-aa-**-AA-&amp;&amp;-##'"}</attribute>

I have a question
on 3/14/21, 8:30 PM

Hi. Sorry for my ignorance but I don't understand where can I define this masks in odoo to be associated with a field. Please, can you clarify it?