首页 > 解决方案 > 如何控制字段的输入格式?

问题描述

我使用 odoo 9 我注意到它没有输入格式的控件,例如对于电子邮件字段,我可以输入任何字符,它会将其视为电子邮件地址。所以我想知道如何控制字段的输入格式,例如对于电子邮件字段,“@ 和 the”的存在是强制性的,或者对于合作伙伴的代码字段增值税,“/”的存在是强制性的。

模板.xml

<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>

    <template id="assets_backend" name="stock assets mask ext" inherit_id="web.assets_backend">
        <xpath expr="." position="inside">
            <link rel="stylesheet" href="/field_mask/static/src/css/mask.css"/>
            <script type="text/javascript" src="/field_mask/static/src/js/widgets.js"></script>
            <script type="text/javascript" src="/field_mask/static/src/lib/jquery.inputmask.bundle.js"></script>
        </xpath>
    </template>
</data>

partner_view.xml

<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
   <record id="res_partner_view_purchase_buttons_TVA_RC" model="ir.ui.view">
        <field name="name">num.TVA.RC.res.partner.view.purchase.</field>
        <field name="model">res.partner</field>
        <field name="inherit_id" ref="base.view_partner_form"/>
        <field name="arch" type="xml">
            <xpath expr="//field[@name='website']" position="after">
                        <field name="CodeTVA" select="1" placeholder="Code TVA" widget="mask" data-inputmask-mask="9999999/A/A/A/999" />
                        <field name="RC" select="1" placeholder="Num RC"/>
            </xpath>
        </field>
   </record>
</data>

小部件.js

function openerp_field_mask_widgets(instance) {



    instance.web.form.FieldMask = instance.web.form.FieldChar.extend({
    template : "FieldMask",


    render_value: function() {

        var show_value = this.get_value();
        var field = this;
        if (!field.get("effective_readonly")) {

            field.$el.find('input').val(show_value);

            var mask = field.node.attrs.mask;
            field.$el.find('input').inputmask(mask);


        } else {

              field.$(".oe_form_char_content").text(show_value);

        }


    },


    get_value: function() {
        val = this.get('value');
        if (!val) {
            return '';
        }

        return  val;
    },

});

instance.web.form.widgets.add('mask', 'instance.web.form.FieldMask');
 }

  openerp.field_mask = function(openerp) {
openerp.field_mask = openerp.field_mask || {};
openerp_field_mask_widgets(openerp);
 }

标签: python-2.7odoo-9

解决方案


您可以通过继承使用 inputMask 制作自己的小部件,您可以在odoowidgetsFieldCharfield_mask 找到有用的mudules


推荐阅读