检查用户是否点击了复选框

Check if user clicked the checkbox

在 QWEB 上 Invoice Portal 我想检查用户是否选中了复选框,如果选中则显示按钮,否则隐藏它们。

我在 Invoice 模型上创建了一个字段:x_custom_checkbox: bool

Default state: False

当状态x_custom_checkbox = False

当状态x_custom_checkbox = True

视图Invoice Portal Template我用<input type="checkbox" id="invoice.x_custom_checkbox"/>调用字段,谁能根据复选框的状态动态show/hide2个按钮(上图)?

你可以在 js 上做到这一点。

odoo.define('your_module_name.account_portal_sidebar', function (require) {
'use strict';

    var AccountPortalSidebar = require('account.AccountPortalSidebar');

    AccountPortalSidebar.include({

            events: _.extend({
                'change input#x_custom_checkbox': '_onXCustomCheckboxChange',
            }, AccountPortalSidebar.prototype.events),

    _onXCustomCheckboxChange: function () {
                var self = this;
                var x_custom_checkbox_checked = this.$('input#x_custom_checkbox').prop('checked');
                if (x_custom_checkbox_checked){
                    $('.o_download_btn').show();
                    $('.o_portal_invoice_print').show();
                } else {
                    $('.o_download_btn').hide();
                    $('.o_portal_invoice_print').hide();
                }
           }, // end of _onXCustomCheckboxChange
});

经过一些测试,我的解决方案实际上非常简单 关于 Invoice Portal xml

 <center><input id="checkbox-status" type="checkbox" name="invoice.x_custom_checkbox"/> Accept</center>

 <div id="ShowHideDiv" class="o_download_pdf btn-toolbar flex-sm-nowrap">

    <script type="text/javascript">
            $("#ShowHideDiv").hide();
            $("#checkbox-status").change(function() {
                if ( $(this).is(':checked') ) {
                    $("#ShowHideDiv").show();
                } else {
                    $("#ShowHideDiv").hide();
                }
            });