有没有办法检测用户何时通过JQuery取消选择输入元素中的文本?
我在做
$('#input').select(function () {...}
在用户选择文字时显示带有格式选项的工具栏,但我无法弄清楚如何检测用户是否清除了选择。
有什么建议吗?
答案 0 :(得分:3)
尝试模糊事件
$('#input').on('blur',function () {
if( this.value == ''){
alert('Blur Event - Text box Empty');
//Your code here
}
});
一旦输入字段失去焦点,这将立即触发。它没有被选中..
答案 1 :(得分:3)
经过一些实验后我发现了解决方案。这就是我做的。我创建了一个从文档中返回所选文本的函数:
function getSelectedText() {
return document.selection.createRangeCollection()[0].text;
}
从这里我可以调整CupOfTea696在事件绑定器上使用jQuery的解决方案,如下所示:
$("#input").on("click change keyup select", function (event) {
if(getSelectedText().length < 1)
hideAppBar();
else
showAppBar();
});
所以我基本上检查所选文本的长度,并根据我显示或隐藏上下文菜单。
我仍然遇到模糊问题,但这更多与在AppBar中触发的点击事件有关而不是上述解决方案。此外,我只在Win8上对此进行了测试,因此不确定这是否是一个有效的基于Web的解决方案,但我不明白为什么它不起作用。
答案 2 :(得分:2)
没有真正的javascript事件可以检测到这一点。这里最好的解决方案是检查模糊,焦点,keydown和mousedown事件。这将是最完整的解决方案,即使它没有完美无瑕。您可以使用.on方法将它同时绑定到所有事件。
$("#input").select(function() {
//do something here
});
$("#input").on("blur focus keydown mousedown", function() {
//do something else here
});
同样,这不是一个完整的解决方案,因为模糊事件可以在不清除选择的情况下发生。但这是你能做的最好的事情。