Автофокус на входе, генерируемом jquery, перестал работать - PullRequest
0 голосов
/ 20 марта 2020

У меня есть таблица, в которой есть img, который действует как кнопка: когда я нажимаю на нее, строка клонируется и вставляется в таблицу. Я хотел бы убедиться, что когда я добавляю новую строку, это фокус. Первоначально этот код работал, и последняя созданная строка была в фокусе, но теперь она перестала работать. Перед тем, как написать вопрос, я попробовал различные решения, но они не сработали. У меня возник соблазн добавить атрибут html autofocus к последней строке и удалить его из предыдущей, когда я создал другую строку, но я не думаю, что это правильный метод. Это код html строки:

     <tr>
        <td  class="col-2 align-middle">
            <label for="Server" data-toggle="tooltip" data-placement="top" title="<?php echo $title_Server?>">Server</label>
        </td>
        <td class="col-8 align-middle">
            <input name="Server" class="form-control" type="text" disabled>
        </td>
        <td class="col-2 align-middle my-auto">
            <img class="aggiungiRiga" src="img/add.svg" />
            <img class="modificaRiga" src="img/pencil.svg" />
            <img class="cancellaRiga"  src="img/delete.svg" />
        </td>
    </tr>

Этот код jquery / js управляет клонированием линии.

$('.aggiungiRiga').on('click', function (){
    event.preventDefault();
    $(this).closest("tr").clone().insertAfter('form > table > tbody > tr:last').find('input').attr('autofocus');//.find('input').focus();

    $('form > table > tbody > tr:last td input').prop('disabled', false);
    $('form > table > tbody > tr:last td:last img:nth-child(1)').hide();//css("visibility", "hidden");
    $('form > table > tbody > tr:last td:last img:nth-child(2)').hide();//css("visibility", "hidden");
    $('form > table > tbody > tr:last td:last img:nth-child(3)').attr('class', 'eliminaRiga');
})

1 Ответ

2 голосов
/ 20 марта 2020

Я считаю, что элемент не может быть сфокусирован, если он отключен, поэтому я бы посоветовал вам попробовать этот код в вашем js

$('.aggiungiRiga').on('click', function (){
    event.preventDefault();
    var x=$(this).closest("tr").clone().insertAfter('form > table > tbody > tr:last').find('input');//.find('input').focus();
        x.prop('disabled',false)
    x.focus()
    //$('form > table > tbody > tr:last td input').prop('disabled', false);
    $('form > table > tbody > tr:last td:last img:nth-child(1)').hide();//css("visibility", "hidden");
    $('form > table > tbody > tr:last td:last img:nth-child(2)').hide();//css("visibility", "hidden");
    $('form > table > tbody > tr:last td:last img:nth-child(3)').attr('class', 'eliminaRiga');
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...