如何在所有浏览器中以编程方式禁用/关闭Javascript中的DropDownList?

时间:2017-05-16 12:10:04

标签: javascript jquery kendo-ui kendo-dropdown

我不确定我们使用的是什么版本的剑道,我有2个文件:

  • kendo.all.min.js - Kendo UI v2014.2.903
  • kendo.web.min.js - Kendo UI v2015.1.429

我有一个带有一些复杂业务逻辑的表单,它指示启用/禁用状态以及我网页上各种下拉列表的默认值。我有一个文本框的问题,该文本框应该根据其值禁用下拉列表。控件的定义如下:

@(Html.Kendo().TextBoxFor(m => m.SomeTextboxValue).HtmlAttributes(new { id = "txtSomeField", onfocus = "FocusC0500()", onblur = "BlurC0500(false);FinalizeColor(this);" }))

@(Html.Kendo().DropDownListFor(m => m.SomeDropdownValue).HtmlAttributes(new { id = "cmbSomeField", onchange = "OnChangeC0600(this, false, false);FinalizeColor(this);"}).BindTo(ViewBag.YesNoDash).OptionLabel(" "))

文本框BlurC0500事件的onblur功能是问题所在。根据输入的值,执行以下JS:

// the variable cmb refers to cmbSomeField, the dropdown list defined above
if ($("#cmbSomeControl").val() == "" || $("#cmbSomeControl").val() == '0')
{
    cmb.select(0);
    cmb.readonly(true);
    cmb.close();
    SetTabIndexVals("cmbSomeField", "DROPDOWN", -1);
    cmb.wrapper.find('.k-input').css('background', '#DDDDDD');
}
else if (val == "" && $("#cmbSomeControl").val() == '1')
{
    cmb.select(0);
    cmb.readonly(false);
    SetTabIndexVals("cmbSomeField", "DROPDOWN", 1);
    cmb.wrapper.find('.k-input').css('background', '#FFA500');
}
else
{
    cmb.select(1);
    cmb.readonly(true);
    cmb.close();
    SetTabIndexVals("cmbSomeField", "DROPDOWN", -1);
    cmb.wrapper.find('.k-input').css('background', '#DDDDDD');
}

我办公室的三个人根据使用的浏览器和浏览器的特定版本得到不同的结果。例如,这适用于我的机器(Chrome v58),但不适用于我的同事机器(Chrome v50)。

没有cmb.close();它似乎在Chrome和FireFox中运行正常,但不是IE - 取决于版本,再次。

那我怎么能纠正这个?

1 个答案:

答案 0 :(得分:0)

我使用内置的enable方法来禁用和启用kendo下拉列表,而不是设置readonly和close。它适用于多种浏览器(IE,Chrome,Firefox)。

cmb.enable(true/false);
相关问题