有没有办法检测用户何时通过 jQuery 取消选择输入元素中的文本?
(注意:我不是在询问是否检测输入元素本身的“未选择”——即模糊——而是关于元素内的文本。)
我在做
$('#input').select(function () {...}
当用户选择文本时显示带有格式选项的工具栏,但我无法弄清楚如何检测用户是否清除了选择。
有什么建议么?
有没有办法检测用户何时通过 jQuery 取消选择输入元素中的文本?
(注意:我不是在询问是否检测输入元素本身的“未选择”——即模糊——而是关于元素内的文本。)
我在做
$('#input').select(function () {...}
当用户选择文本时显示带有格式选项的工具栏,但我无法弄清楚如何检测用户是否清除了选择。
有什么建议么?
尝试模糊事件
$('#input').on('blur',function () {
if( this.value == ''){
alert('Blur Event - Text box Empty');
//Your code here
}
});
一旦输入字段失去焦点,这将触发..即; 它被取消了..
所以经过一些实验后,我想出了一个解决方案。这就是我所做的。我创建了一个从文档中返回所选文本的函数:
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 的解决方案,但我不明白为什么它不起作用。
没有真正的 javascript 事件可以检测到这一点。这里最好的解决方案是检查模糊、焦点、keydown 和 mousedown 事件。这将是最完整的解决方案,即使它并非完美无缺。您可以使用 .on 方法将它同时绑定到所有事件。
$("#input").select(function() {
//do something here
});
$("#input").on("blur focus keydown mousedown", function() {
//do something else here
});
同样,这不是一个完整的解决方案,因为模糊事件可以在不清除选择的情况下发生。但这是你能做的最好的。