快速問題 - 是否有可能檢測焦點是來自鼠標點擊還是來自焦點事件的選項卡?我可以檢測焦點的來源嗎? (Javascript,jQuery)
我猜如果沒有,我將不得不在相同的元素上使用點擊控制來確定源,但我更喜歡從焦點事件的方式。
感謝
Gausie
快速問題 - 是否有可能檢測焦點是來自鼠標點擊還是來自焦點事件的選項卡?我可以檢測焦點的來源嗎? (Javascript,jQuery)
我猜如果沒有,我將不得不在相同的元素上使用點擊控制來確定源,但我更喜歡從焦點事件的方式。
感謝
Gausie
可能無法正常工作100%,但如果沒有一個直接的方法,然後你就不能使用Mouseover
和檢測呢?這個人會把鼠標放在控件上來選擇它(?)
你也可以選擇控制以及... – Mickel 2009-12-11 14:44:10
是的,如果數據輸入到控件中,並且在輸入數據之前沒有發生鼠標移動,它可以使用「tab」鍵:) – Shoban 2009-12-11 14:45:17
THanks - 這是一個好主意。下面是我用 \t \t \t \t $代碼( '輸入')。鼠標懸停(函數(){ \t \t \t \t \t $(本)。ATTR( '點擊', '真'); \t \t \t \t}); \t \t \t \t $( '輸入')鼠標移開(函數(){ \t \t \t \t \t $(本).removeAttr( '點擊'); \t \t \t \t})。 \t \t \t \t $( '輸入')聚焦(函數(){ \t \t \t \t \t $此= $(本); \t \t \t'\t \t $ this.parents('tr')。css('background-color','yellow'); \t \t \t \t \t如果{ \t \t \t \t \t \t警報(1)($ this.attr( '點擊')= '真'!); $('body')。scrollTop($ this.offset()。top - ($(window).height()/ 2)); \t \t \t \t \t} \t \t \t \t}); \t \t \t \t $( '輸入')模糊(函數(){ \t \t \t \t \t $(本)。家長( 'TR')的CSS( '背景色', '透明');。。 \t \t \t \t}); – Gausie 2009-12-11 14:55:51
我很自信,焦點事件不會導致焦點已被排序(window.focus,key,click ...) )。
但是在點擊的情況下,您可以檢測到鼠標點擊。您也可以檢測鍵盤事件(更多關於http://www.quirksmode.org/js/keys.html)。
使用鼠標位置怎麼樣?
在事件處理程序中,將當前鼠標位置與控件區域進行比較。如果座標位於控件區域內,則不滾動。
這當然不是一個完美的解決方案,因爲它們可以將元素懸停,然後在不點擊的情況下將其選中。但是,既然你試圖減少任何迷失方向,這實際上可能是好的副作用。
使用鼠標位置時,我喜歡使用quirksmode.org中的腳本。我認爲Jquery也可以爲它提供一些功能。
嘗試獲取keyCode - 這裏有一篇文章的鏈接,詳細介紹如何。底部的評論也可能有用。
http://www.geekpedia.com/tutorial138_Get-key-press-event-using-JavaScript.html
下面是文章的代碼。它不表現出來,但對標籤鍵代碼爲9
<script type="text/javascript">
document.onkeyup = KeyCheck;
function KeyCheck(e)
{
var KeyID = (window.event) ? event.keyCode : e.keyCode;
switch(KeyID)
{
case 16:
document.Form1.KeyName.value = "Shift";
break;
case 17:
document.Form1.KeyName.value = "Ctrl";
break;
case 18:
document.Form1.KeyName.value = "Alt";
break;
case 19:
document.Form1.KeyName.value = "Pause";
break;
case 37:
document.Form1.KeyName.value = "Arrow Left";
break;
case 38:
document.Form1.KeyName.value = "Arrow Up";
break;
case 39:
document.Form1.KeyName.value = "Arrow Right";
break;
case 40:
document.Form1.KeyName.value = "Arrow Down";
break;
}
}
</script>
如果任何人的興趣,這裏是我是如何做的:
$('input').focus(function(){
$this = $(this);
$this.parents('tr').css('background-color','yellow');
if($this.attr('click')!='true'){
$('body').scrollTop($this.offset().top-($(window).height()/2));
}
}).blur(function(){
$(this).parents('tr').css('background-color','transparent');
}).mouseover(function(){
$(this).attr('click','true');
}).mouseout(function(){
$(this).removeAttr('click');
});
+1,因爲它是一個有趣的問題。但我不明白你爲什麼需要這種區別。 – 2009-12-11 14:38:17
我正在爲快速輸入提供數據輸入表單。如果用戶在框中標籤,我想滾動,以便元素在屏幕中垂直居中。但是,如果他們點擊,效果會變得非常迷惑,我不希望它發生。 – Gausie 2009-12-11 14:43:21