【问题标题】:Disable copy paste on text field odoo 13禁用文本字段odoo 13上的复制粘贴
【发布时间】:2020-10-28 07:00:35
【问题描述】:

我有一个文本字段。

my_field = fields.Text()

我想使用 java 脚本或 python 从 intput 禁用复制和粘贴(ctrl+c,ctrl+v)。我该怎么做,谢谢。

【问题讨论】:

    标签: javascript python xml odoo odoo-13


    【解决方案1】:

    您可以扩展 FieldText widget 并阻止 copypaste events。创建一个新的小部件并绑定事件,然后在文本字段上设置widget 属性。

    示例:(模块名称为stack_overflow

    odoo.define('stack_overflow.actions', function (require) {
    "use strict";
    
       var basic_fields = require('web.basic_fields');
       var registry = require('web.field_registry');
    
       var no_copy_paste = basic_fields.FieldText.extend({
    
            events: _.extend({}, basic_fields.FieldText.prototype.events, {
                'copy': '_onCopyPaste',
                'paste': '_onCopyPaste',
            }),
    
            _onCopyPaste: function(ev) {
                ev.preventDefault();
                alert("Copy/Paste Disabled!");
            },
       });
    
       registry.add('no_copy_paste', no_copy_paste);
    });
    

    将 js 文件添加到 asset bundle:

    <template id="assets_backend" name="stack_overflow assets" inherit_id="web.assets_backend">
        <xpath expr="." position="inside">
            <script type="text/javascript" src="/stack_overflow/static/src/js/actions.js"></script>
        </xpath>
    </template>
    

    在文本字段上设置小部件属性:

    <field name="description" widget="no_copy_paste" placeholder="Add a description..." />
    

    【讨论】:

      【解决方案2】:

      您可以通过附加事件处理程序copypaste 来防止使用jquery 在文本字段上复制粘贴。这是示例。

       $('.field_text').on("copy paste",function(e) {
           e.preventDefault();
       });
      

      【讨论】:

        猜你喜欢
        • 2012-09-30
        • 1970-01-01
        • 2018-10-26
        • 2014-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-07
        • 2011-01-31
        相关资源
        最近更新 更多