2014-04-24 40 views
0

我想通過鍵盤快捷鍵將一個特殊的id(在roundcube中)聚焦。在HTML是javascript/jquery:focus()不起作用

... 
    <div id="mainscreen"> 
    <div id="messagetoolbar" class="toolbar"> 
    <div id="mailview-left" style="width: 220px;"> 
    <div id="mailview-right" style="left: 232px;"> 
    ... 

我試過如下:

// Strg + Tab, um in Nachrichtenbereich zu kommen 
... 
else if (event.keyCode == 9 && event.ctrlKey) { 
alert("taste erkannt"); 
//document.getElementById("messagetoolbar").focus(); 
//$("#messagetoolbar").focus(); 
setTimeout(function() { $('#messagetoolbar').focus(); alert("zeit"); }, 3000); 
} 
... 

第一個提醒,並顯示在第二個警報,但沒有關注ID messagetoolbar。有人有想法嗎?

非常感謝。

編輯:我想我應該更好地描述它:我想標記第一行/電子郵件在電子郵件收件箱中的roundcube。收件箱是一個帶有tr標籤的表格......當我嘗試你的解決方案時,第一行也是點綴的,但是用Enter鍵我無法打開郵件和其他鍵我不能標記第一行/郵件...我想我必須「模擬左擊」來獲得第一行標記...?
現在我試圖使用jQuery的.trigger。收件箱,表的HTML是

<table id="messagelist" class="records-table messagelist sortheader fixedheader"> 
    <thead> 
    <tbody> 
    <tr id="rcmrow27428" class="message"> 
     <td class="threads"></td> 
     <td class="date">16.04.2014 13:41</td> 
     <td class="fromto"> 
... 

我試圖用...

$('#messagelist tr').eq(1).addClass('message selected focused').removeClass('unfocused').trigger("click"); 

...但它不工作:它增加了一個刪除類,但並沒有真正重點行:-(隨着「按鈕,」它的工作原理

再次編輯:。我覺得roundcube的文件list.js對這個問題很重要有,我發現以下幾點:

/** 
* Set focus to the list 
*/ 
focus: function(e) 
{ 
    var n, id; 
    this.focused = true; 

    for (n in this.selection) { 
    id = this.selection[n]; 
    if (this.rows[id] && this.rows[id].obj) { 
     $(this.rows[id].obj).addClass('selected').removeClass('unfocused'); 
    } 
    } 

    // Un-focus already focused elements (#1487123, #1487316, #1488600, #1488620) 
    // It looks that window.focus() does the job for all browsers, but not Firefox (#1489058) 
    $('iframe,:focus:not(body)').blur(); 
    window.focus(); 

    if (e || (e = window.event)) 
    rcube_event.cancel(e); 
}, 

有誰知道如何修改或使用指的是我的問題?謝謝!

回答

0

您可以對焦控件像divspan等。您可以使用,如果需要book marks移動到該div

0

你想突出div,然後你可以使用jQuery和下面的代碼給予突出顯示效果。

$("div").click(function() { 
    $(this).effect("highlight", {}, 3000); 
}); 
+0

請注意,這需要jQuery UI,而不僅僅是jQuery。 –

4

添加tabindex=0屬性要FOUCS div和你將能夠將焦點設置在採用div .focus()

+0

隨着tabindex = 0它到目前爲止,我得到一個虛線圍繞div /元素。使用按鈕(配備「rcmail-command」/ onclick-command)它可以工作:集中後,我可以按Enter鍵,然後執行該命令。 – Andre

+0

但是最初我想在roundcube的email收件箱中標記第一行/電子郵件。收件箱是一張 ......當我嘗試你的解決方案時,第一行也是虛線,但是輸入時我無法打開郵件和其他鍵,我不能標記第一行/郵件...我想我必須模擬一個左鍵來獲得第一行標記..? – Andre

0

早上好,

我讀過幾現在的時間,那個人不能集中表格行,但只能聚焦元素,它接受用戶的輸入。否則,我認爲必須有一種方法來模擬jquery/javascript在表格行上的點擊!我嘗試了以下內容:

document.onkeydown = function(event) { 
    ... 
    else if (event.keyCode == 9 && event.ctrlKey) { 
    $('#messagelist tr').on('click', function() { 
    alert('I was clicked'); 
    }); 
    $('#messagelist tr').eq(1).click(); 
    } 
... 
} 

顯示警報!但行不「標記」!?