Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过CSS隐藏表单视图按钮_Css_Xml_Odoo_Odoo 12 - Fatal编程技术网

通过CSS隐藏表单视图按钮

通过CSS隐藏表单视图按钮,css,xml,odoo,odoo-12,Css,Xml,Odoo,Odoo 12,在表单视图中,如果客户partner\u id为False,我想隐藏一个按钮,我尝试了t-if,但运气不佳,我绑定了attrs,但也不起作用 检查客户的状态合作伙伴id: 我想隐藏“发送邮件”按钮: 有解决办法吗 我试图运行CSS来隐藏按钮 我的代码: <field name="name" attrs="{'invisible': [('partner_id', '=', False)]}"> <style> .o_chatter_butt

在表单视图中,如果客户
partner\u id
为False,我想隐藏一个按钮,我尝试了
t-if
,但运气不佳,我绑定了
attrs
,但也不起作用

检查客户的状态
合作伙伴id

我想隐藏“发送邮件”按钮:

有解决办法吗

我试图运行CSS来隐藏按钮

我的代码:

<field name="name" attrs="{'invisible': [('partner_id', '=', False)]}">
      <style>
        .o_chatter_button_new_message {
                display: none !important;
        }
      </style>
      </field>

.o_chatter_按钮_新建_消息{
显示:无!重要;
}

你所采取的方法是不可能的。 Send message按钮是动态呈现的,它在Qweb模板中定义

您可以在此处找到按钮代码

解决方案:要隐藏按钮,可以在js中隐藏按钮,按钮在js中呈现并传递值[检查合作伙伴id是否为False],并在按钮本身上添加条件

谢谢

合作伙伴id
的值更改时,您可以在中隐藏或显示按钮。您可以通过扩展
字段manyOne
并根据
合作伙伴id
的值更改按钮的可见性状态来创建新的manyOne小部件

在下面的示例中,如果在加载表单视图时定义了
partner_id
,或者
partner_id
的值设置为false,则
Send Message按钮将隐藏。设置合作伙伴的值时(onchange事件),该按钮应可见

您应该将js文件添加到

要使用上面定义的小部件,您需要在XML定义中将
partner\u id
字段的小部件属性设置为
hideSendMsg

<record id="view_task_form2_inherit" model="ir.ui.view">
    <field name="name">view.task.form2.inherit</field>
    <field name="model">project.task</field>
    <field name="inherit_id" ref="project.view_task_form2"/>
    <field name="arch" type="xml">
        <field name="partner_id" position="attributes">
            <attribute name="widget">hideSendMsg</attribute>
        </field>
    </field>
</record>

view.task.form2.inherit
项目任务
hideSendMsg
=============================================================

我的解决方案:@Fotic

<script type="text/javascript">
        document.onload = check_status();
        document.onchange = check_status();
        function check_status() {
            if (document.getElementById("o_field_input_103")){
                var hasCSSClass = document.getElementById("o_field_input_103")
            }
            if (hasCSSClass){
              if ( hasCSSClass.classList.contains("o_field_empty") || hasCSSClass.classList.contains("o_input")) {
                  $(".o_chatter_button_new_message").show();
                  console.log("1111111111");
              } else{
                  $(".o_chatter_button_new_message").hide();
                  console.log("2222222222");
              }
            }
        }

    </script>

document.onload=检查状态();
document.onchange=检查状态();
功能检查_状态(){
if(document.getElementById(“o_字段\u输入\u 103”)){
var hasCSSClass=document.getElementById(“o_字段\输入\ U 103”)
}
如果(hasCSSClass){
if(hasCSSClass.classList.contains(“o_字段_空”)| | hasCSSClass.classList.contains(“o_输入”)){
$(“.o_chatter_button_new_message”).show();
控制台日志(“1111111”);
}否则{
$(.o_chatter_button_new_message”).hide();
控制台日志(“2222”);
}
}
}

thaks的第一个工作。。我可以在表单视图中运行此代码吗?另外,我只想检查
res.partner
字段是否为空。。。还有什么是
FormRenderer
,因为我在Odoo上太没名气了?您需要检查
partner\u id
是否等于
false
,然后在加载表单视图后隐藏该按钮。渲染器作业表示在DOM元素中查看的数据。我编辑了我的答案,添加了一个指向Odoo 12视图文档的链接,阅读了有关视图的部分,您将了解它是如何工作的。添加您使用的模型和视图,我将更新上面的示例。您好,我要将其放置的视图是:
project.task.form
external\u id:
project.view\u task\u form2
model:
project.task
。如果你有时间帮我解决这个问题,我会很高兴的。非常感谢您的帮助,但我无法访问后端,因此无法将其作为附加组件,但无论如何,我找到了解决方案,我认为这并不完美,但它确实起到了作用。我也会接受你的答案,如果其他人不同意,我会为他们写我的解决方案。
<script type="text/javascript">
        document.onload = check_status();
        document.onchange = check_status();
        function check_status() {
            if (document.getElementById("o_field_input_103")){
                var hasCSSClass = document.getElementById("o_field_input_103")
            }
            if (hasCSSClass){
              if ( hasCSSClass.classList.contains("o_field_empty") || hasCSSClass.classList.contains("o_input")) {
                  $(".o_chatter_button_new_message").show();
                  console.log("1111111111");
              } else{
                  $(".o_chatter_button_new_message").hide();
                  console.log("2222222222");
              }
            }
        }

    </script>