可能重複:
Unselect what was selected in an input with .select()jquery input元素取消選擇事件?
有沒有一種方法,當用戶通過JQuery取消選擇在輸入元素文本來檢測?
我做
$('#input').select(function() {...}
當用戶選擇的文本,以顯示與格式選項工具欄,但我一直無法弄清楚如何在用戶清除的選擇檢測。
有什麼建議嗎?
可能重複:
Unselect what was selected in an input with .select()jquery input元素取消選擇事件?
有沒有一種方法,當用戶通過JQuery取消選擇在輸入元素文本來檢測?
我做
$('#input').select(function() {...}
當用戶選擇的文本,以顯示與格式選項工具欄,但我一直無法弄清楚如何在用戶清除的選擇檢測。
有什麼建議嗎?
嘗試模糊事件
$('#input').on('blur',function() {
if(this.value == ''){
alert('Blur Event - Text box Empty');
//Your code here
}
});
這隻要輸入字段失去焦點..即火;它是未選中的。
綁定點擊也可能有用。 – nrodic
元素失去焦點並不一定意味着選擇被清除。例如,如果用戶要點擊頁面外的某個地方(即瀏覽器url欄),輸入字段將失去焦點,但選擇仍然存在。 – CupOfTea696
但是可以通過在事件中指定一個條件來解決這個問題..模糊或更改事件可以在這裏完成這些事情 –
有沒有真正的javascript事件來檢測到這一點。這裏最好的解決方案是檢查模糊,焦點,keydown和mousedown事件。這將是最完整的解決方案,儘管它並不完美。您可以使用.on方法將它同時綁定到所有事件。
$("#input").select(function() {
//do something here
});
$("#input").on("blur focus keydown mousedown", function() {
//do something else here
});
再次,這不是一個完整的解決方案,因爲模糊事件可能發生而不清除選擇。但這是你能做的最好的。
我上面評論過,但我也會在這裏重新發布,因爲這很有趣。你知道是否有方法檢測選擇的內容或字符長度?我可以用它來確定選擇是否已被取消。 –
因此,經過一番嘗試,我找到了一個解決方案。這是我做的。我創建了一個返回從文檔中選定文本的功能:
function getSelectedText() {
return document.selection.createRangeCollection()[0].text;
}
在這裏,我能夠適應使用jQuery的CupOfTea696的解決方案在事件綁定像這樣:
$("#input").on("click change keyup select", function (event) {
if(getSelectedText().length < 1)
hideAppBar();
else
showAppBar();
});
所以我基本檢查所選文本的長度和基於我顯示或隱藏上下文菜單。
我仍然有模糊的問題,但這更多的是在AppBar中觸發的點擊事件,而不是上述解決方案。此外,我只在Win8上測試過,所以不確定這是否是一個有效的基於Web的解決方案,但我不明白爲什麼它不起作用。
看起來像一個很好的解決方案(: – CupOfTea696
請解釋「清除選擇」。 – David