【问题标题】:Why click event calling blur event on sucess为什么单击事件在成功时调用模糊事件
【发布时间】:2015-04-20 12:51:40
【问题描述】:

我想动态填充下拉列表。所以我在我的 .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 服务返回列表,我在成功函数中添加到下拉列表选项中。为了只显示部分代码,我在成功函数中使用了以下代码。

var dropDown = $('viewCriteriaTemplateDropdown');

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

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

这里 dictCount 不是。列表中的元素。

在此之后,我正在为更改和模糊编写单个函数,这将 dropList 的大小减小到 1。

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

【问题讨论】:

  • var dropDown = $('viewCriteriaTemplateDropdown'); 必须是 var dropDown = $('#viewCriteriaTemplateDropdown');
  • 这样试试还是一样。
  • 尝试发布html。
  • html 我的意思是整个 html 用 id viewCriteriaTemplateDropdown 包装元素。您的问题似乎是 jquery 事件委托问题(必要时使用事件委托)

标签: jquery asp.net .net click blur


【解决方案1】:

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

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

尝试将其删除:dropDown.focus();

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-05
      • 2012-03-09
      • 2018-06-02
      • 1970-01-01
      • 2011-11-14
      • 1970-01-01
      • 1970-01-01
      • 2011-09-17
      相关资源
      最近更新 更多