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 通过电子邮件帮助解决此问题。他帮了大忙。