2017-02-10 5 views
0

Я пытался заставить этот код работать для множества наборов опций выбора для динамического crm. Моя проблема заключается в том, что этот код работает без усилий в Chrome, делает именно то, что я хочу, но в IE событие .click возвращает false, несмотря ни на что, если флажки отмечены или сняты флажки.JavaScript .click не работает в IE 11

Весь этот код выполняет набор параметров и преобразует его в список нескольких элементов и устанавливает значение в два поля: «l1s_trainingmodulesvalues» содержит значение выбранной опции, а «l1s_trainingmodules» содержит метку выбранной опции.

Может ли кто-нибудь взглянуть на то, что я делаю неправильно.

<html><head> 
 
<title></title> 
 
<script src="../WebResources/new_jquery3.1.1.min.js" type="text/javascript"></script> 
 
<script src="ClientGlobalContext.js.aspx" type="text/javascript"></script> 
 
<script type="text/javascript"> 
 

 
     // function will be called when web resource is loaded on Form. 
 
     $(document).ready(function() 
 
     { 
 
      ConvertDropDownToCheckBoxList(); 
 
     }); 
 

 
     //Coverts option list to checkbox list. 
 
function ConvertDropDownToCheckBoxList() 
 
{ 
 
    var dropdownOptions = parent.Xrm.Page.getAttribute("l1s_trainingmodulesoptionset").getOptions(); 
 
    var selectedValue = parent.Xrm.Page.getAttribute("l1s_trainingmodulesvalues").getValue(); 
 

 
    $(dropdownOptions).each(function (i, e) 
 
    { 
 
     var rText = $(this)[0].text; 
 
     var rvalue = $(this)[0].value; 
 
     var isChecked = false; 
 
     if (rText != '') 
 
     { 
 
      if (selectedValue != null && selectedValue.indexOf(rvalue) != -1) 
 
       isChecked = true; 
 

 
      var checkbox = "<label><input type=\"checkbox\" name =\"r\">" + rText + "<br></label>" 
 
      $(checkbox) 
 
       .attr("value", rvalue) 
 
       .attr("checked", isChecked) 
 
       .attr("id", "id" + rvalue) 
 
       .on('click',function() 
 
       { 
 
        //To Set Picklist Select Values 
 
        var selectedOption = parent.Xrm.Page.getAttribute("l1s_trainingmodulesvalues").getValue(); 
 
        alert($(this).is(':checked')); /*** This value always returns false in IE but in Chrome it works perfectly*/** 
 
        if ($(this).is(':checked')) 
 
        { 
 
         if (selectedOption == null) 
 
          selectedOption = rvalue+""; 
 
         else 
 
          selectedOption = selectedOption + "," + rvalue 
 
        } 
 
        else 
 
        { 
 
         var tempSelected = rvalue + ","; 
 
         if (selectedOption != null) 
 
         { 
 
          if (selectedOption.indexOf(tempSelected) != -1) 
 
           selectedOption = selectedOption.replace(tempSelected, ""); 
 
          else 
 
           selectedOption = selectedOption.replace(rvalue, "") 
 
         } 
 
        } 
 
        //alert(rvalue); 
 
        parent.Xrm.Page.getAttribute("l1s_trainingmodulesvalues").setValue(selectedOption); 
 

 
        //To Set Picklist Select Text 
 
        var selectedYear = parent.Xrm.Page.getAttribute("l1s_trainingmodules").getValue(); 
 
        if ($(this).is(':checked')) 
 
        { 
 
         if (selectedYear == null) 
 
          selectedYear = rText+""; 
 
         else 
 
          selectedYear = selectedYear + "," + rText 
 
        } 
 
        else 
 
        { 
 
         var tempSelectedtext = rText + ","; 
 
         if (selectedYear != null) 
 
         { 
 
          if (selectedYear.indexOf(tempSelectedtext) != -1) 
 
           selectedYear = selectedYear.replace(tempSelectedtext, ""); 
 
          else 
 
           selectedYear = selectedYear.replace(rText, ""); 
 
         } 
 
        } 
 
        //alert(selectedYear); 
 
        parent.Xrm.Page.getAttribute("l1s_trainingmodules").setValue(selectedYear); 
 

 
       }) 
 
       .appendTo(checkboxList); 
 
     } 
 
    }); 
 
} 
 
</script> 
 
<meta charset="utf-8"> 
 
</head><body style="-ms-word-wrap: break-word;"><form><div id="checkboxList"> 
 
</div></form> 
 
</body></html>

ответ

1

Ваш checkbox переменная не относится к CheckBox элемента. Это ярлык (var checkbox = "<label><input type=\"checkbox\" name =\"r\">" + rText + "<br></label>"), который не имеет проверенного состояния.

Внутри вашего click обработчика, изменить

if ($(this).is(':checked')) 

к

if ($(this).find('input').is(':checked')) 
+0

Вы сударь рок !!! Большое вам спасибо, это сработало как шарм. – shabbzy

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

  • Нет связанных вопросов^_^