SugarCRM - 如何将onClick事件添加到现有HTML / Checkbox

时间:2015-09-04 18:48:33

标签: javascript html checkbox sugarcrm suitecrm

SuiteCRM版本7.2.1

Sugar Version 6.5.20(Build 1001)

好的,在这里要清楚,我知道如何将onClick事件添加到复选框,问题是我不确定如何在SugarCRM中专门执行此操作。

我在SugarCRM中有一个Multi-Select字段。它需要是一个Multi-checkbox,但SugarCRM中的HTML字段是“只读”。所以我需要编辑现有字段并将其更改为Multi-checkbox。如果发现回答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)如果我在'customCode' =>文件中为该字段添加editviewdefs.php选项,它将覆盖整个字段,无论我放在那里,如果我复制并粘贴整个字段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也是我读过的关于修改你做过更改的字段的文章,以便它们在详细视图中保留其值。

1 个答案:

答案 0 :(得分:0)

我在我的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通过电子邮件提供帮助。他是一个重要的帮助。