相关疑难解决方法(0)

获取触发jquery blur()事件的单击对象

假设我这样做:

$(target).blur(function(e){
  //do stuff
});
Run Code Online (Sandbox Code Playgroud)

有没有办法获取被点击的对象以触发模糊操作?

我尝试使用e.target,但这似乎是返回附加到模糊操作的对象而不是单击的对象.

javascript jquery events javascript-events onblur

41
推荐指数
3
解决办法
4万
查看次数

如果任何一个子节点获得焦点,则阻止触发模糊事件

我在页面上有一个div,显示有关特定类别(图像,名称等)的一些信息.

当我点击编辑图像时,它会将类别置于编辑模式,这样我就可以更新名称.从下图中可以看出,它显示"Soup"当前处于编辑模式,其他处于正常视图模式.这一切都按预期工作,取消/保存按钮做正确的事情.(我尝试添加图像,但不会让我,需要更多的爱)

然而,一旦处于编辑模式,如果我点击页面上的任何其他位置(div之外),预期结果将是汤类别将返回查看模式.在某种事件发生后,这也应该让我问他们是否想要保存更改.

所以我接下来决定在"汤"父div上创建一个模糊事件.如果我单击页面上的任何位置,这将按预期工作,但是如果我单击div的内部元素,它也会导致父模糊事件被触发,从而导致类别返回到查看模式.

那么,有没有办法阻止父div在其任何一个子节点获得焦点时触发模糊事件?

<div tabindex="-1" onblur="alert('outer')">
    <input type="text" value="Soup" />
</div>
Run Code Online (Sandbox Code Playgroud)

我只是在没有编译器的情况下编写代码,所以不确定这是否有效,但希望你能得到这个想法.

我正在使用Knockout.js动态更新GUI,但这不应该影响这个我不会想到的答案.

javascript jquery onblur knockout.js

25
推荐指数
3
解决办法
2万
查看次数

如何确定重点在哪里?

这个问题曾经在这里提出过,但几年前,当时没有跨平台的解决方案(除了setTimeout解决方案,这真的不是很方便).

我想做,onblur="foo(parm);"并且foo能够确定哪个元素现在具有焦点.

我正在使用常规的javascript; 请不要这个jQuery.

这些天有可能吗?

html javascript focus onblur

15
推荐指数
1
解决办法
3120
查看次数

javascript模糊事件 - 有没有办法检测哪个元素现在有焦点?

有没有人有一种技术可以让我在模糊事件后确定哪个元素有焦点?我有一个输入字段,我想在模糊时重置,除非模糊是由用户点击"保存"按钮引起的.我只想在保存按钮的onclick功能中设置一个标志,但是这样会触发太晚(除非点击事件总是在模糊事件之前触发,我怀疑.)

javascript javascript-events

7
推荐指数
1
解决办法
8085
查看次数

如何在用户点击其下方时隐藏下拉列表

下面是我正在使用的输入下拉列表的简化版本.

它的作用的基本概要是:如果您专注于输入,则会出现一个下拉列表.如果单击下拉列表中的某个选项,该选项将填充输入并且下拉列表将消失.这是使用取得了onfocus和功能我叫dropdown();undropdown();.

我处于两难境地,当有人点击其他地方时,我无法让下拉消失.如果我使用onblur它,它会成功隐藏下拉列表,但如果你单击一个选项它不会填充输入,这是因为,该onblur函数首先运行,因此,该input();函数不会运行,因为下拉列表已经隐藏.

如果你onclick在body标签或其他父标签上放置一个,它会认为onfocus是一个click,它运行的是dropdown();函数,然后是undropdown();函数,因此函数重叠后永远不会出现下拉列表.

我很感激帮助找出如何订购功能,以便它们以正确的顺序执行而不会相互重叠.

JSFiddle 在这里可用.

function input(pos) {
  var dropdown = document.getElementsByClassName('drop');
  var li = dropdown[0].getElementsByTagName("li");
  document.getElementsByTagName('input')[0].value = li[pos].innerHTML;
  undropdown(0);
}
function dropdown(pos) {
  document.getElementsByClassName('content')[pos].style.display = "block"
}
function undropdown(pos) {
  document.getElementsByClassName('content')[pos].style.display = "none";
}
Run Code Online (Sandbox Code Playgroud)
.drop {
  position: relative;
  display: inline-block;
  vertical-align: top;
  overflow: visible;
}
.content {
  display: none;
  list-style-type: none;
  border: 1px solid #000; …
Run Code Online (Sandbox Code Playgroud)

html javascript css input drop-down-menu

7
推荐指数
2
解决办法
2689
查看次数

确定单击的最后一项

我需要检索导致来自WITHIN模糊事件的焦点(模糊)事件的DOM元素.下面的代码将为我提供失去焦点的元素的ID,而不是导致元素失去焦点的元素.这是我需要的第二个元素.

.live('blur', function(e) {
    var id = $(this).attr('id');
}
Run Code Online (Sandbox Code Playgroud)

如何获取导致模糊的元素,而不是模糊附加到的元素?我能想到的唯一方法是捕获window.click事件,然后处理我需要的逻辑,但这会变得棘手,所以我希望有一种方法可以从blur事件中获取DOM元素.

jquery

6
推荐指数
2
解决办法
1万
查看次数

如何使SVG元素具有可调焦性?适用于Chrome但不适用于IE/Firefox?

我有一个简单的饼图,使用svg及其子元素进行渲染.我的目的是让饼图的每个楔形都具有键盘焦点.这通常通过简单地向目标元素添加tabindex ="0"属性来完成.

将饼图设置为可聚焦:

d3.selectAll('.nv-slice > path').attr("tabindex", "0");
Run Code Online (Sandbox Code Playgroud)

如果您尝试使用Chrome"拼贴"到饼图,它会按照我的预期运行.

问题是饼图不会在IE或Firefox中得到关注.知道为什么会这样吗?如何让这些饼图楔形具有焦点?如果没有办法创作这个,也许有一个解决方法?这里的结尾是找到一个解决方案,我可以使用键事件来触发工具提示.

  1. 专注于馅饼楔
  2. 触发keyevent后显示工具提示

javascript charts svg angularjs nvd3.js

5
推荐指数
0
解决办法
1041
查看次数

Onblur,下一个将获得关注的控制器是什么?

我正在触发一些文本框的onblur()代码.但是如果用户点击取消按钮导致onblur(),我想做一些不同的事情.在onblur()事件处理函数中是否有一种方法可以知道控件是什么,即将获得焦点并进行相应的反应?

-约瑟夫

javascript jquery

4
推荐指数
1
解决办法
4608
查看次数

怎么能告诉我我点击了哪个元素来触发模糊事件处理程序?

非常简单.我有一个用于触发函数的blur()事件处理程序,我想要在单击某个元素触发模糊时不触发该函数.

我尝试了document.activeElement,但我获得了一个HTMLBodyElement而不是我点击的元素.

码:

$j(".input_filtrare_camp").blur(
    function(event) {
    nr_img = this.parentNode.id.split("_")[1];
    //alert(document.activeElement);
    if(document.activeElement.id.indexOf("img_exact") < 0) //run only if the id of the element I clicked on doesn't contain "img_exact"
        enter_input_filtrare(event.target);                                                                         
});
Run Code Online (Sandbox Code Playgroud)

当然,警报用于故障排除.

我使用techfoobar的解决方案如下:

var currElem = null;

$(document).mousedown(function(e) {
    currElem = e.target;
});

$j(".input_filtrare_camp").blur(
    function(event) {
    nr_img = this.parentNode.id.split("_")[1];
    if(currElem.id.indexOf("img_exact") < 0) //run only if the id of the element I clicked on doesn't contain "img_exact"
        enter_input_filtrare(event.target);                                                                         
});
Run Code Online (Sandbox Code Playgroud)

查看PointedEars的答案,了解有关此问题的一些重要信息.

html javascript events

2
推荐指数
1
解决办法
4753
查看次数