2012-10-03 149 views

回答

3

嘗試模糊事件

$('#input').on('blur',function() { 
    if(this.value == ''){ 
     alert('Blur Event - Text box Empty'); 
     //Your code here 
    } 
}); 

這隻要輸入字段失去焦點..即火;它是未選中的。

+0

綁定點擊也可能有用。 – nrodic

+1

元素失去焦點並不一定意味着選擇被清除。例如,如果用戶要點擊頁面外的某個地方(即瀏覽器url欄),輸入字段將失去焦點,但選擇仍然存在。 – CupOfTea696

+1

但是可以通過在事件中指定一個條件來解決這個問題..模糊或更改事件可以在這裏完成這些事情 –

1

有沒有真正的javascript事件來檢測到這一點。這裏最好的解決方案是檢查模糊,焦點,keydown和mousedown事件。這將是最完整的解決方案,儘管它並不完美。您可以使用.on方法將它同時綁定到所有事件。

$("#input").select(function() { 
    //do something here 
}); 

$("#input").on("blur focus keydown mousedown", function() { 
    //do something else here 
});​ 

再次,這不是一個完整的解決方案,因爲模糊事件可能發生而不清除選擇。但這是你能做的最好的。

+0

我上面評論過,但我也會在這裏重新發布,因爲這很有趣。你知道是否有方法檢測選擇的內容或字符長度?我可以用它來確定選擇是否已被取消。 –

3

因此,經過一番嘗試,我找到了一個解決方案。這是我做的。我創建了一個返回從文檔中選定文本的功能:

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的解決方案,但我不明白爲什麼它不起作用。

+0

看起來像一個很好的解決方案(: – CupOfTea696