JavaScript .click 在 IE 11 中不起作用

标签 javascript jquery html dynamics-crm webresource

我一直在尝试让此代码适用于动态 crm 的多选择选项集。我的问题是,这段代码在 Chrome 中毫不费力地工作,完全按照我想要的方式工作,但在 IE 中,无论选中或取消选中复选框,.click 事件都会返回 false。

此代码所做的就是获取一个选项集并将其转换为多选列表,并将值设置到两个字段中,“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>

最佳答案

您的checkbox变量不引用复选框元素。它是一个标签 ( var checkbox = "<label><input type=\"checkbox\" name =\"r\">" + rText + "<br></label>" ),没有选中状态。

在你的 click 里面处理程序,更改

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

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

关于JavaScript .click 在 IE 11 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42168987/

相关文章:

Javascript 在循环内添加自定义事件类

Javascript service worker 通知超时

javascript - 带有三个按钮的弹出窗口

php - 在ajax中混合javascript和php变量

javascript - 使用 on click 事件显示评论表单

jquery - 通过 jquery 设置值后 Bootstrap Validator 仍然显示错误消息

html - CSS:输入框的边框颜色有两种颜色?

javascript - 我怎样才能改变这个输入的值?

java - 如何从 Wicket 提供动态 JavaScript 文件?

javascript - 使用 JS 更改计时器上的所有图像