2010-10-08 2 views
4

Я использую код отсюда http://www.korvus.com/blog/geek/making-the-tab-key-work-with-jeditable-fields/, чтобы получить вкладку между рабочими полями jeditable, и если поля сами по себе, это отлично работает. Однако мне нужно, чтобы мои поля были в таблице, и единственный раз, когда работает вкладка, является табуляция с последнего поля на первое, и, конечно, мне нужно, чтобы она была от первого до следующего и так далее ...tabbing между jeditable полями в таблице

$('div.edit').bind('keydown', function(evt) { 
if(evt.keyCode==9) { 
    $(this).find("input").blur(); 
    var nextBox=''; 

    if ($("div.edit").index(this) == ($("div.edit").length-1)) { 
      nextBox=$("div.edit:first");   //last box, go to first 
     } else { 
      nextBox=$(this).next("div.edit"); //Next box in line 
     } 
    $(nextBox).click(); //Go to assigned next box 
    return false;   //Suppress normal tab 
}; 
}); 

таблица форматируется как это

<table> 

<tr> 
    <td class='leftcolumn'> 
    <strong>Firstname:</strong> 
    </td> 
    <td> 
    <div class='edit' id='firstname'><?=$userdetail['firstname']?></div> 
    </td> 
</tr> 

<tr> 
    <td class='leftcolumn'> 
    <strong>Lastname:</strong> 
    </td> 
    <td> 
    <div class='edit' id='lastname'><?=$userdetail['lastname']?></div> 
    </td> 
</tr> 
</table> 

заранее спасибо

+0

см http://stackoverflow.com/questions/885616/tab-key-with-jeditable-fields –

ответ

8

Я считаю, что вопрос заключается в том, что ваши входные поля не являются прямыми братьями и сестрами друг с другом, таким образом, «следующий()» не удается. Я думаю, что это будет работать:

$('div.edit').bind('keydown', function(evt) { 
if(evt.keyCode==9) { 
    var nextBox=''; 
    var currentBoxIndex=$("div.edit").index(this); 
    if (currentBoxIndex == ($("div.edit").length-1)) { 
      nextBox=$("div.edit:first");   //last box, go to first 
     } else { 
      nextBox=$("div.edit").eq(currentBoxIndex+1); //Next box in line 
     } 
    $(this).find("input").blur(); 
    $(nextBox).click(); //Go to assigned next box 
    return false;   //Suppress normal tab 
}; 
}); 
+0

изумительно, спасибо! – matjkd

+0

Это сработало для меня! Кроме того, мне нужна одна настройка ... можете ли вы мне помочь, @SylvanK? http://stackoverflow.com/questions/24935069/using-tabbing-in-jeditable-fields-in-datatables – user2847749

Смежные вопросы