Как изменить тип ввода = имя файла в указанной строке c в таблице динамических c - PullRequest
0 голосов
/ 18 марта 2020

Я кодирую динамическую c таблицу, в которой я выбираю 3 отдельных файла для загрузки, и имя файла отображается в базе ячеек таблицы в соответствующей строке.

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

Вывод таблицы:

Мой код:

<table style="font-size: 15px;" id="table2" border="0">
    <thead>
    <tr>
        <th width="4%">Ref ID</th>
        <th width="8%">Customer</th>
        <th width="5%">Service</th>
        <th width="10%">Process Map</th>
        <th width="10%">Presentation</th>
        <th width="10%">Requirements</th>
        <th width="7%">Date</th>
        <th width="15%">Action</th>
    </tr>
    <tbody id="doctbody">
    $result_count = mysqli_query( $conn,

    "SELECT COUNT(*) As total_records FROM `customer` `service_type` " );
    $total_records = mysqli_fetch_array( $result_count );
    $total_records = $total_records[ 'total_records' ];
    $total_no_of_pages = ceil( $total_records / $total_records_per_page );
    $second_last = $total_no_of_pages - 1; // total page minus 1

    $result = mysqli_query( $conn, "SELECT customer.Cus_id, customer.Date, customer.customer, service_type.Serv_Name
    FROM customer INNER JOIN service_type ON customer.Cus_id=service_type.Cus_id LIMIT $offset, $total_records_per_page
    " );

    while ( $row = mysqli_fetch_array( $result ) ) {

    echo "
    <tr>
        <td id='input'>" . $row[ 'Cus_id' ] . "</td>
        <td>" . $row[ 'customer' ] . "</td>
        <td>" . $row[ 'Serv_Name' ] . "</td>

        <td id='info' align='left'>
            <div class='image-upload'>
                <label for='file-input'>
                    <img id='img' src='images/noun_Add Document_13006.png' width='20' height='20'/>
                </label>
                <input type='file' id='file-input' name='sortfile'>
                <label id='file-name'>No file</label>
            </div>
        </td>
        <td align='left'>
            <div class='image-upload'>
                <label for='file-input1'>
                    <img src='images/noun_Add Document_13006.png' width='20' height='20'/>
                </label>
                <input type='file' id='file-input1' name='sortfile'>
                <label id='file-name1'>No file</label>
            </div>
        </td>
        <td align='left'>
            <div class='image-upload'>
                <label for='file-input2'>
                    <img src='images/noun_Add Document_13006.png' width='20' height='20'/>
                </label>
                <input type='file' id='file-input2' name='sortfile'>
                <label id='file-name2'>No file</label>
            </div>
        </td>
        <td>" . $row[ 'Date' ] . "</td>
        <td>
            <input type='submit' value='submit' class='btn btn-success' id='UpSubmit' name='UpSubmit'>
            <input type='submit' value='edit' class='btn btn-secondary' name='EdSubmit'>
            <input type='submit' class='btn btn-primary' value='delete' name='deSubmit'>
        </td>
    </tr>
    ";
    }
    mysqli_close( $conn );
    ?>
    </tbody>
</table>

Это позволяет мне изменять имя файла, когда я выбираю файл, но только для первой строки

$("#file-input").change(function () {
    $("#file-name").text(this.files[0].name);
});

$("#file-input1").change(function () {
    $("#file-name1").text(this.files[0].name);
});
$("#file-input2").change(function () {
    $("#file-name2").text(this.files[0].name);
});

1 Ответ

0 голосов
/ 18 марта 2020

Итак, у вас есть сетка из 3х3 файловых входов.

По горизонтали они имеют идентификаторы file-input, file-input1, file-input2.

Это нормально.

Но по вертикали они имеют идентификаторы file-input, file-input, file-input

Таким образом, у вас 3 раза один и тот же идентификатор. Это проблема!

Эффект заключается в том, что $("#file-input1") должен решить, какое из этих полей имеется в виду, а $("#file-input1") решает принять только первый компонент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...