如何控制字段的输入格式?
How can'i controle the input format for a field?
我使用 odoo 9,我注意到它没有输入格式的控件,例如对于电子邮件字段,我可以输入任何字符,它会将其视为电子邮件地址。所以我想知道如何控制字段的输入格式,例如对于电子邮件字段,“@ 和 the”的存在是强制性的,或者对于合作伙伴的代码字段 VAT,“/”的存在是强制性的。
template.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>
widgets.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);
}
您可以通过继承 FieldChar
使用 inputMask 制作您自己的小部件,您可以在 odoowidgets or field_mask
找到有用的模块
我使用 odoo 9,我注意到它没有输入格式的控件,例如对于电子邮件字段,我可以输入任何字符,它会将其视为电子邮件地址。所以我想知道如何控制字段的输入格式,例如对于电子邮件字段,“@ 和 the”的存在是强制性的,或者对于合作伙伴的代码字段 VAT,“/”的存在是强制性的。
template.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>
widgets.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);
}
您可以通过继承 FieldChar
使用 inputMask 制作您自己的小部件,您可以在 odoowidgets or field_mask