通过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>