Добавить несколько строк таблицы при нажатии кнопки

Я пытаюсь загрузить html-файл, содержащий те же элементы таблицы, что и моя таблица по умолчанию, когда я нажимаю кнопку «Добавить больше». Когда я нажимаю кнопку «Добавить еще», он загружает файл один раз, но не работает, когда я нажимаю кнопку второй раз. Вот мой раздел таблицы на странице по умолчанию:

<div class = "form_container">
    <form method = "POST" action = "actionPage.php">
        <div class = "table_container">
            <table border = "2">
                <tr>
                    <tr>
                        <td><label>Sr.No :</label></td>
                        <td><input type = "number" class = "SrNo" name = "SrNo" value = "1" readonly></td>
                        <td><label>Design number :</label></td>
                        <td><input type = "text" class = "designNo" name = "designNumber"></td>
                    </tr>
                    <tr>                
                        <td><label>Fabric quality :</label></td>
                        <td><select name = "fabricSelect">
                            <option value = "Fabric1" name = "fabric1">Fabric1</option>
                            <option value = "Fabric2" name = "fabric2">Fabric2</option>
                            <option value = "Fabric3" name = "fabric3">Fabric3</option>
                            <option value = "Fabric4" name = "fabric4">Fabric4</option>
                            </select>           
                        <td><label>Color matching :</label></td>
                        <td><input type = "select" class = "colorMatch" name = "colorMatch"></td>
                    </tr>
                    <tr>
                        <td><label>Quantity :</label></td>
                        <td><input type = "number" class = "quantity" name = "quantity"></td>
                        <td><label>Printing type :</label></td>
                        <td><select name = "printSelect">
                            <option value = "Print1">Print1</option>
                            <option value = "Print2">Print2</option>
                            <option value = "Print3">Print3</option>
                            <option value = "Print4">Print4</option>
                            </select>
                        </td>           
                    </tr>
                    <tr>
                        <td ><label>Rate :</label></td>
                        <td colspan = "2"><input type = "number" name = "rate"></td>
                    </tr>
                    <tr class = "newForm">
                    </tr>
                </tr>
            </table>
            <input type = "submit" id = "submit_btn" class = "class_btn">
        </div>
    </form>
    <button class = "addButton">Add more tab</button>
</div>

Это мой сценарий:

<script>
    $(document).ready(function() {
        var flag = 0;
        $(".addButton").click(function(e) {
            if (flag != 5) {
                flag += 1;
                $(".newForm").load("addedForm.php");
            }
            else {
                e.preventDefault();
            }
        });
    })
</script>

И вот мой другой файл, который я хочу загрузить:

<tr>
<td><label>Sr.No :</label></td>
<td><input type = "number" class = "SrNo" value = "" readonly></td>

<td><label>Design Number:</label></td>
<td><input type = "text" class = "designNo"></td>
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
1 022
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Есть ли смысл загружать файл вместо того, чтобы клонировать нужный вам элемент, тем более, что он уже есть в вашем DOM? Это, на мой взгляд, чище и проще в управлении.

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

РЕДАКТИРОВАТЬ Теперь клонирует всю таблицу, а не только одну строку. Будьте осторожны с именами входов, так как они тоже клонированы.

<script src = "https://code.jquery.com/jquery-3.5.1.min.js" integrity = "sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0 = " crossorigin = "anonymous"></script>

<div class = "form_container">
    <form method = "POST" action = "actionPage.php">
        <div class = "table_container">
            <table id = "clone" border = "2">
                <tr>
                    <tr >
                        <td><label>Sr.No :</label></td>
                        <td><input type = "number" class = "SrNo" name = "SrNo" value = "1" readonly></td>
                        <td><label>Design number :</label></td>
                        <td><input type = "text" class = "designNo" name = "designNumber"></td>
                    </tr>
                    <tr>                
                        <td><label>Fabric quality :</label></td>
                        <td><select name = "fabricSelect">
                            <option value = "Fabric1" name = "fabric1">Fabric1</option>
                            <option value = "Fabric2" name = "fabric2">Fabric2</option>
                            <option value = "Fabric3" name = "fabric3">Fabric3</option>
                            <option value = "Fabric4" name = "fabric4">Fabric4</option>
                            </select>           
                        <td><label>Color matching :</label></td>
                        <td><input type = "select" class = "colorMatch" name = "colorMatch"></td>
                    </tr>
                    <tr>
                        <td><label>Quantity :</label></td>
                        <td><input type = "number" class = "quantity" name = "quantity"></td>
                        <td><label>Printing type :</label></td>
                        <td><select name = "printSelect">
                            <option value = "Print1">Print1</option>
                            <option value = "Print2">Print2</option>
                            <option value = "Print3">Print3</option>
                            <option value = "Print4">Print4</option>
                            </select>
                        </td>           
                    </tr>
                    <tr>
                        <td ><label>Rate :</label></td>
                        <td colspan = "2"><input type = "number" name = "rate"></td>
                    </tr>
                    <tr class = "newForm">
                    </tr>
                </tr>
            </table>
            
        </div>
        <input type = "submit" id = "submit_btn" class = "class_btn">
    </form>
    <button class = "addButton">Add more tab</button>
</div>

<script>
    $(document).ready(function() {
        var flag = 0;
        $(".addButton").click(function(e) {
            if (flag != 5) {
                flag += 1;
                var clone = $("#clone").clone();
                clone.find("input[name=SrNo]").val(flag+1);
                clone.appendTo($(".table_container"));
            }
            else {
                e.preventDefault();
            }
        });
    })
</script>

Ааа, я вижу, что значение "Старший Нет" пусто. Я обновлю свой ответ. Вы могли бы увеличить значение на единицу, но я действительно не знаю вашего варианта использования.

thetechnician94 21.12.2020 21:11

Я также понял, что загрузка файла здесь не сработает, поэтому вместо этого я добавил элементы, так как не знал о клонировании. Ваш метод действительно хорош, если мы хотим сэкономить время на повторном вводе всех элементов. А что касается SrNo, я хочу автоматически увеличивать его при добавлении новой таблицы. Я это сделал. Теперь я попытаюсь клонировать всю таблицу, используя ваш метод. Большое спасибо

Neeraj Chimwal 22.12.2020 10:34

У меня есть один вопрос. Что означает clone.find("input[name=SrNo]").val(""); делать здесь?

Neeraj Chimwal 22.12.2020 10:39

Я хочу снова клонировать всю таблицу

Neeraj Chimwal 22.12.2020 12:57

@NeerajChimwal clone.find("input[name=SrNo]").val("") ищет в клонированном элементе вход SRNo и ничего не устанавливает для его значения. Я обновлю свой ответ, чтобы показать клонирование всей таблицы, но, по сути, все, что вам нужно сделать, это изменить идентификатор, чтобы ссылаться на правильные элементы.

thetechnician94 22.12.2020 14:05

@NeerajChimwal Я также обновил код, чтобы увеличить значение поля SrNo и для вас. Может быть, это будет иметь больше смысла

thetechnician94 22.12.2020 14:14

Другие вопросы по теме