为什么点击事件在成功时调用模糊事件
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();
})
我想动态填充下拉列表。所以我在我的 .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();
})