SuiteCRM 版本 7.2.1
Sugar 版本 6.5.20(内部版本 1001)
好的,这里要说清楚,我知道如何将 onClick 事件添加到复选框,问题是我不确定如何在 SugarCRM 中专门执行此操作。
我在 SugarCRM 中有一个多选字段。它需要是一个多复选框,但 SugarCRM 中的 HTML 字段是“只读”的。所以我需要编辑现有字段并将其更改为多复选框。如果找到答案here .
好吧,现在我有一个多复选框,如下所示,带有“无”选项。我现在想要发生的是在 EditView 中,当用户单击“以上都不是”时,所有其他选项都将被禁用并取消选中。
下面是为 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我还读过一篇关于修改您也进行了更改的字段的文章,以便它们在详细 View 中保留其值。
最佳答案
我在我的 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 ,在这种情况下,HTML 是由 Sugar 生成的,而不是我,其次 javascript 可以通过 name
调用。而不是id
使用document.getElementsByName
。 -W3 Schools, document.getElementsByName
customCode
在这种情况下也是完全没有必要的。
归功于Jeff Bickart通过电子邮件帮助解决此问题。他给了我很大的帮助。
关于javascript - SugarCRM - 如何将 onClick 事件添加到现有 HTML/Checkbox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32404745/