Javascript автофокус на элементах таблицы ruby - PullRequest
1 голос
/ 01 сентября 2011

Моя программа позволяет пользователю нажимать кнопку, а затем строка таблицы поднимается в таблицу через ajax. Мне нужно, чтобы фокус был на текстовом поле в этой строке, чтобы пользователь мог добавлять данные.

Мой код ajax ruby:

if( $('#effort_<%= @project_task.id %>').length == 0 )
  $('#task_list').prepend('<tr><td><%= @project_task.project.project_number %> <%= @project_task.project.project_name %> - <%= @project_task.task_name %></td>' +
                         '<td><%= text_field :effort, :hours, :name => 'effort_' + @project_task.id.to_s, :id => 'effort_' + @project_task.id.to_s, :size => 20 %></td>' +
                         '<td><%= link_to image_tag('icons/delete.png'), "Delete", :method => :delete, :confirm => "Are you sure?", :remote => :true, :title => "delete row", :class => "delete" %></td></tr>' );

:autofocus => true не работает. Моя основная проблема - заставить автофокус работать на добавленной строке LAST, а также только на добавленных строках. Таблица заполнена другими строками, которые не были добавлены, поэтому, когда пользователь загружает экран и ничего не добавил, автофокусировка не должна существовать.

Это сложный вопрос, и мне нужно указать в правильном направлении.

Обновление
Сгенерированный HTML при добавлении строки:

   <tr>
     <td>S006T  - Project</td>
        <td>
          <input id="effort_5" type="text" size="20" name="effort_5">
        </td>
     <td>
        <a class="delete" title="delete row" rel="nofollow" data-remote="true" data-method="delete" data-confirm="Are you sure?" href="Delete">
        <img src="/images/icons/delete.png?1314715563" alt="Delete">
        </a>
     </td>
   </tr>

1 Ответ

2 голосов
/ 02 сентября 2011

Сразу после добавления новой строки в список, просто вызовите jQuery focus () для добавленного элемента:

$('#effort_<%= @project_task.id.to_s %>').focus();
...