为什么点击事件在成功时调用模糊事件

Why click event calling blur event on sucess

我想动态填充下拉列表。所以我在我的 .js 文件中添加了如下事件。

jQuery('#viewCriteriaTemplateDropdown').click(jQuery.proxy(this.PopulateTemplateDropdown, this));
jQuery('#viewCriteriaTemplateDropdown').change(jQuery.proxy(this.SelectTemplateDropdownBlur, this));
jQuery('#viewCriteriaTemplateDropdown').blur(jQuery.proxy(this.SelectTemplateDropdownBlur, this));

在 PopulateTemplateDropDown 中,我按如下方式调用 .net webservice:如果是第一次调用此服务,否则什么都不做。

GetDisplayTemplates(
        si.ScreenTypeId, 
        si.ScreenContextId, 
        jQuery.proxy(this.PopulateTemplateDropdownSuccess, this),
        jQuery.proxy(this.PopulateTemplateDropdownFailure, this));

此 Web 服务 returns 列表,我在成功函数中添加到下拉列表选项中。为了仅显示部分代码,我在成功函数中使用了以下代码。

var dropDown = $('viewCriteriaTemplateDropdown');

现在,填充下拉列表的代码然后:

dropDown.style.height = 'auto';
dropDown.size = (dictCount > 10 ? 10 : dictCount);
dropDown.selectedIndex = -1;
dropDown.focus();

这里的 dictCount 是没有。列表中的元素。

在此之后,我正在为 change 和 blur 编写一个函数,它将 dropList 的大小减小到 1。

现在我的问题是,当我第一次单击列表时,它会在完成该控件时调用成功函数,从而进入模糊事件。我不明白为什么会这样。因为进入模糊列表大小减小到 1。但是在下一次单击时它不会调用模糊函数,因为它是第二次并且不会进入成功部分。

您的元素上的 .focus() 似乎会产生模糊事件,即使您的元素已经获得焦点。

看到这个Fiddle,然后点击按钮几次。

尝试删除这个也许:dropDown.focus();

问题已通过删除点击事件并像这样填充下拉列表来解决

var con = this;
    jQuery(document).ready(function () {
        con.PopulateTemplateDropdown();
    })