2015-09-04 3 views
1

SuiteCRM Версия 7.2.1SugarCRM - Как добавить событие OnClick к существующим HTML/Checkbox

Sugar Версия 6.5.20 (Build 1001)

Okay так, чтобы быть ясно здесь, я знаю, как добавить событие onClick для флажка, проблема в том, что я не уверен, как это сделать в SugarCRM.

У меня есть поле Multi-Select в SugarCRM. Это должен быть многотоновый флажок, но поля HTML в SugarCRM являются «только для чтения». Поэтому мне нужно было отредактировать существующее поле и изменить его флажок Multi-checkbox. Если обнаружено, что ответ here.

Ну, теперь у меня есть мульти-флажок, например ниже, с опцией «none». Теперь я хочу, чтобы это произошло в 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> 

Так что мне нужно добавить функцию 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); 

Сейчас я получаю сообщение об ошибке в хромированной консоли и ничего не изменилось в HTML. Но если я подниму то же самое в firefox, ошибки не будет.

Here также является статьей, которую я прочитал о внесении изменений в поля, в которые вы вносили изменения, чтобы они сохраняли значение в подробном представлении.

+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 генерируется с помощью сахара, а не меня, а во-вторых, Javascript может позвонить по name вместо id использованием document.getElementsByName. - W3 Schools, document.getElementsByName

customCode также был просто лишним в этом случае.

Кредит Jeff Bickart за помощь через это по электронной почте. Он оказал большую помощь.

Смежные вопросы