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

标签 javascript html checkbox sugarcrm suitecrm

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/

相关文章:

php - PHP 帮助下的动态复选框

javascript - 改造 + GSON = 输入 "onFailure"

javascript - 用于从事件窗口中提取和存储所选文本的浏览器书签

html - 如何在 Foundation 中构建嵌套的照片网格?

html - 在较小的设备上堆叠 Bootstrap 4 选项卡

html - 在现有导航栏中创建下拉菜单

带有复选框问题的 jQuery 禁用按钮

javascript - $ ('elems' ).each() 带有粗箭头

javascript - 如何找出在 Chrome 开发工具中添加样式属性的位置?

jquery - Slickgrid 选择标题列中的复选框