SugarCRM - 如何将 onClick 事件添加到现有 HTML / Checkbox
SugarCRM - How to add an onClick event to existing HTML / Checkbox
SuiteCRM 版本 7.2.1
Sugar 版本 6.5.20(内部版本 1001)
好吧,在这里说清楚,我知道如何将 onClick 事件添加到复选框,问题是我不确定如何在 SugarCRM 中具体执行此操作。
我在 SugarCRM 中有一个多 Select 字段。它需要是一个多复选框,但 SugarCRM 中的 HTML 字段是 "Read-only"。所以我需要编辑现有字段并将其更改为多选框。如果找到答案 here.
好吧,现在我有一个多复选框,如下所示,带有 "none" 选项。我现在想要发生的是在 EditView 中,当用户单击 "none of the above" 时,所有其他选项都被禁用和取消选中。
这是为 HTML:
生成的正常代码
<p style="height: 200px; overflow: scroll; margin-bottom: 1.5em; width:30%" class="select">
<input type="hidden" id="typesoflicenses_c_multiselect" name="typesoflicenses_c_multiselect" value="true">
<label><input type="checkbox" name="typesoflicenses_c[]" value="1" id="typesoflicenses_c" title="">Life Insurance</label><br>
<label><input type="checkbox" name="typesoflicenses_c[]" value="2" id="typesoflicenses_c" title="">Securities</label><br>
<label><input type="checkbox" name="typesoflicenses_c[]" value="3" id="typesoflicenses_c" title="">CPA</label><br>
<label><input type="checkbox" name="typesoflicenses_c[]" value="4" id="typesoflicenses_c" title="">Attorney</label><br>
<label><input type="checkbox" name="typesoflicenses_c[]" value="5" id="typesoflicenses_c" title="">Mortgage Broker</label><br>
<label><input type="checkbox" name="typesoflicenses_c[]" value="6" id="typesoflicenses_c" title="">Real Estate</label><br>
<label><input type="checkbox" name="typesoflicenses_c[]" value="7" id="typesoflicenses_c" title="">Enroller</label><br>
<label><input type="checkbox" name="typesoflicenses_c[]" value="8" id="typesoflicenses_c" title="">None</label><br>
</p>
所以我需要在"none"选项中添加一个onclick函数,调用一个函数。我的问题是:
A) 如果我在该字段的 editviewdefs.php
文件中添加一个 'customCode' =>
选项,它将用我放在那里的任何内容覆盖整个字段,如果我复制并粘贴整个字段 html ,然后没有任何内容保存到 DetailView。我只是想附加到已经存在的 html 字段。
这是我的 javascript 文件:
//disable all other checkboxes if "none" is checked
function hideshowlicense(){
if (document.getElementsByName("typesoflicenses_c[]")[7].checked){
//Disable checkboxes
document.getElementsByName("typesoflicenses_c[]")[0].disabled=true;
document.getElementsByName("typesoflicenses_c[]")[1].disabled=true;
document.getElementsByName("typesoflicenses_c[]")[2].disabled=true;
document.getElementsByName("typesoflicenses_c[]")[3].disabled=true;
document.getElementsByName("typesoflicenses_c[]")[4].disabled=true;
document.getElementsByName("typesoflicenses_c[]")[5].disabled=true;
document.getElementsByName("typesoflicenses_c[]")[6].disabled=true;
//Uncheck any other checked options
document.getElementsByName("typesoflicenses_c[]")[0].checked=false;
document.getElementsByName("typesoflicenses_c[]")[1].checked=false;
document.getElementsByName("typesoflicenses_c[]")[2].checked=false;
document.getElementsByName("typesoflicenses_c[]")[3].checked=false;
document.getElementsByName("typesoflicenses_c[]")[4].checked=false;
document.getElementsByName("typesoflicenses_c[]")[5].checked=false;
document.getElementsByName("typesoflicenses_c[]")[6].checked=false;
}else{
document.getElementsByName("typesoflicenses_c[]")[0].disabled=false;
document.getElementsByName("typesoflicenses_c[]")[1].disabled=false;
document.getElementsByName("typesoflicenses_c[]")[2].disabled=false;
document.getElementsByName("typesoflicenses_c[]")[3].disabled=false;
document.getElementsByName("typesoflicenses_c[]")[4].disabled=false;
document.getElementsByName("typesoflicenses_c[]")[5].disabled=false;
document.getElementsByName("typesoflicenses_c[]")[6].disabled=false;
}
}
SUGAR.util.doWHEN("typeof($('#loa_c'))!= 'undefined'"), YAHOO.util.Event.addListener(YAHOO.util.Dom.get('loa_c'), 'change', dep);
SUGAR.util.doWHEN("typeof($('#typesoflicenses_c'))!= 'undefined'"), YAHOO.util.Event.addListener(YAHOO.util.Dom.get('typesoflicenses_c'), 'change', hideshowlicense);
现在我在 chrome 控制台中收到错误,并且 HTML 中没有任何更改。但是,如果我在 firefox 中调出同样的东西,则不会出现错误。
Here 也是我读到的一篇关于修改字段的文章,您也进行了更改,以便它们在详细信息视图中保留价值。
我在 javascript(上面列出的 javascript)之前添加了这个,它解决了我的问题。我输入了 doWHEN
而不是 doWhen
。我有一些语法错误。
SUGAR.util.doWhen("typeof($('#typesoflicenses_c'))!= 'undefined'",
function() {
YAHOO.util.Event.addListener(YAHOO.util.Dom.get(document.getElementsByName("typesoflicenses_c[]")[7]), 'change', hideshowlicense);
}
);
@Lelio Faieta, in this case, the HTML is being generated by Sugar, not me, and secondly the javascript can call by name
instead of id
using document.getElementsByName
. -W3 Schools, document.getElementsByName
customCode
在这种情况下也完全没有必要。
感谢 Jeff Bickart 通过电子邮件帮助解决此问题。他帮了大忙。
SuiteCRM 版本 7.2.1
Sugar 版本 6.5.20(内部版本 1001)
好吧,在这里说清楚,我知道如何将 onClick 事件添加到复选框,问题是我不确定如何在 SugarCRM 中具体执行此操作。
我在 SugarCRM 中有一个多 Select 字段。它需要是一个多复选框,但 SugarCRM 中的 HTML 字段是 "Read-only"。所以我需要编辑现有字段并将其更改为多选框。如果找到答案 here.
好吧,现在我有一个多复选框,如下所示,带有 "none" 选项。我现在想要发生的是在 EditView 中,当用户单击 "none of the above" 时,所有其他选项都被禁用和取消选中。
这是为 HTML:
生成的正常代码<p style="height: 200px; overflow: scroll; margin-bottom: 1.5em; width:30%" class="select">
<input type="hidden" id="typesoflicenses_c_multiselect" name="typesoflicenses_c_multiselect" value="true">
<label><input type="checkbox" name="typesoflicenses_c[]" value="1" id="typesoflicenses_c" title="">Life Insurance</label><br>
<label><input type="checkbox" name="typesoflicenses_c[]" value="2" id="typesoflicenses_c" title="">Securities</label><br>
<label><input type="checkbox" name="typesoflicenses_c[]" value="3" id="typesoflicenses_c" title="">CPA</label><br>
<label><input type="checkbox" name="typesoflicenses_c[]" value="4" id="typesoflicenses_c" title="">Attorney</label><br>
<label><input type="checkbox" name="typesoflicenses_c[]" value="5" id="typesoflicenses_c" title="">Mortgage Broker</label><br>
<label><input type="checkbox" name="typesoflicenses_c[]" value="6" id="typesoflicenses_c" title="">Real Estate</label><br>
<label><input type="checkbox" name="typesoflicenses_c[]" value="7" id="typesoflicenses_c" title="">Enroller</label><br>
<label><input type="checkbox" name="typesoflicenses_c[]" value="8" id="typesoflicenses_c" title="">None</label><br>
</p>
所以我需要在"none"选项中添加一个onclick函数,调用一个函数。我的问题是:
A) 如果我在该字段的 editviewdefs.php
文件中添加一个 'customCode' =>
选项,它将用我放在那里的任何内容覆盖整个字段,如果我复制并粘贴整个字段 html ,然后没有任何内容保存到 DetailView。我只是想附加到已经存在的 html 字段。
这是我的 javascript 文件:
//disable all other checkboxes if "none" is checked
function hideshowlicense(){
if (document.getElementsByName("typesoflicenses_c[]")[7].checked){
//Disable checkboxes
document.getElementsByName("typesoflicenses_c[]")[0].disabled=true;
document.getElementsByName("typesoflicenses_c[]")[1].disabled=true;
document.getElementsByName("typesoflicenses_c[]")[2].disabled=true;
document.getElementsByName("typesoflicenses_c[]")[3].disabled=true;
document.getElementsByName("typesoflicenses_c[]")[4].disabled=true;
document.getElementsByName("typesoflicenses_c[]")[5].disabled=true;
document.getElementsByName("typesoflicenses_c[]")[6].disabled=true;
//Uncheck any other checked options
document.getElementsByName("typesoflicenses_c[]")[0].checked=false;
document.getElementsByName("typesoflicenses_c[]")[1].checked=false;
document.getElementsByName("typesoflicenses_c[]")[2].checked=false;
document.getElementsByName("typesoflicenses_c[]")[3].checked=false;
document.getElementsByName("typesoflicenses_c[]")[4].checked=false;
document.getElementsByName("typesoflicenses_c[]")[5].checked=false;
document.getElementsByName("typesoflicenses_c[]")[6].checked=false;
}else{
document.getElementsByName("typesoflicenses_c[]")[0].disabled=false;
document.getElementsByName("typesoflicenses_c[]")[1].disabled=false;
document.getElementsByName("typesoflicenses_c[]")[2].disabled=false;
document.getElementsByName("typesoflicenses_c[]")[3].disabled=false;
document.getElementsByName("typesoflicenses_c[]")[4].disabled=false;
document.getElementsByName("typesoflicenses_c[]")[5].disabled=false;
document.getElementsByName("typesoflicenses_c[]")[6].disabled=false;
}
}
SUGAR.util.doWHEN("typeof($('#loa_c'))!= 'undefined'"), YAHOO.util.Event.addListener(YAHOO.util.Dom.get('loa_c'), 'change', dep);
SUGAR.util.doWHEN("typeof($('#typesoflicenses_c'))!= 'undefined'"), YAHOO.util.Event.addListener(YAHOO.util.Dom.get('typesoflicenses_c'), 'change', hideshowlicense);
现在我在 chrome 控制台中收到错误,并且 HTML 中没有任何更改。但是,如果我在 firefox 中调出同样的东西,则不会出现错误。
Here 也是我读到的一篇关于修改字段的文章,您也进行了更改,以便它们在详细信息视图中保留价值。
我在 javascript(上面列出的 javascript)之前添加了这个,它解决了我的问题。我输入了 doWHEN
而不是 doWhen
。我有一些语法错误。
SUGAR.util.doWhen("typeof($('#typesoflicenses_c'))!= 'undefined'",
function() {
YAHOO.util.Event.addListener(YAHOO.util.Dom.get(document.getElementsByName("typesoflicenses_c[]")[7]), 'change', hideshowlicense);
}
);
@Lelio Faieta, in this case, the HTML is being generated by Sugar, not me, and secondly the javascript can call by name
instead of id
using document.getElementsByName
. -W3 Schools, document.getElementsByName
customCode
在这种情况下也完全没有必要。
感谢 Jeff Bickart 通过电子邮件帮助解决此问题。他帮了大忙。