gpt4 book ai didi

javascript - Jquery - 在同时使用同一输入时区分 'click' 和 'focus'

转载 作者:太空宇宙 更新时间:2023-11-04 16:30:15 26 4
gpt4 key购买 nike

如果单击输入如果输入成为焦点,我将尝试在输入上触发事件。

我遇到的问题是阻止事件在点击时触发两次,显然,点击输入也会使其成为焦点。我在 jfiddle 上放了一个非常松散的版本来向你展示我的意思,代码如下:

HTML:

<body>
<input type="textbox" name="tb1" class="input1"></input>
<label> box 1 </label>
<input type="textbox" name="tb2" class="input2"></input>
<label> box 2 </label>
</body>

JQuery

$(function () {
$('.input2').click(function() {
alert("click");
});
$('.input2').focus(function() {
alert("focus");
});
});

JSFiddle:http://jsfiddle.net/XALSn/2/

您会看到,当您按 Tab 键输入 2 时,您会收到一个警报,但如果您单击,则会收到两个。对于我的场景来说,理想情况下,它需要是一个警报而忽略另一个。它似乎也没有真正集中注意力。

提前感谢您的任何建议。

最佳答案

如何在焦点上设置一个标志,这样我们就可以在焦点上触发并忽略点击,然后也监听焦点元素上的点击?合理?看看 demo jsFiddle - 如果您聚焦或单击未聚焦的 .index2,它会触发聚焦事件并忽略单击。在获得焦点时,点击它会触发点击。

我不知道你为什么想要这个(我无法想象任何人出于任何原因想要点击一个聚焦的元素(因为 carat 已经在该领域处于事件状态)但是你去:

$(function () {
$('.input2').on("click focus blur", function(e) {
e.stopPropagation();
if(e.type=="click"){
if($(this).data("justfocussed")){
$(this).data("justfocussed",false);
} else {
//I have been clicked on whilst in focus
console.log("click");
}
} else if(e.type=="focus"){
//I have been focussed on (either by clicking on whilst blurred or by tabbing to)
console.log("focus");
$(this).data("justfocussed",true);
} else {
//I no longer have focus
console.log("blur");
$(this).data("justfocussed",false);
}
});
});

http://jsfiddle.net/XALSn/12/

关于javascript - Jquery - 在同时使用同一输入时区分 'click' 和 'focus',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22384857/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com