簡體   English   中英

PHP,JQuery - 如何動態添加更多字段包括dropdownlist(數據庫中的值和文本框)

[英]PHP, JQuery - How to dynamically add more fields consist of dropdownlist(value from database, and a text box)

我有2個表單組件,我想動態添加(允許用戶添加超過1)

首先,我有一個下拉列表,其中包含從MySQL填充的值。 接下來是一個允許用戶輸入一些查詢的文本框。

基本上,下拉列表將顯示用戶列表以及該人員向該人員鍵入消息的文本框。

用戶可以發送給多個不同的用戶,因此有一個ADD按鈕,它將添加另一個下拉列表和一個文本框。

我嘗試使用jQuery追加。 但append不接受PHP作為其服務器端。 我也嘗試過jQuery clone來克隆整個DIV但是失敗了。

我正在使用此代碼動態添加字段

動態添加刪除字段

這是我的下拉列表和文本框的代碼

<div class="input_fields_wrap">
<button class="add_field_button">Add More Fields</button>
<div> 
    <select name="msgrecever1" style="background:#252525" >
          <option value="">Select Faculty</option>
          <?php
            require_once("../dbconnection/dbcon.php");
            $sql="SELECT * FROM user WHERE role='Faculty'";
            $records=mysqli_query($con,$sql);
            while($row=mysqli_fetch_assoc($records)){
            $name=$row['username'];
            echo "<option value='$name'>".$name."</option>";
            }                               
            ?>

          </select><input type="text" name="mytext[]"></div>

只要用戶按“添加新字段”,我想復制上述代碼中的許多代碼

jQuery的:

$(document).ready(function() {

    var max_fields      = 10; //maximum input boxes allowed
    var wrapper         = $(".input_fields_wrap"); //Fields wrapper
    var add_button      = $(".add_field_button"); //Add button ID


     x = 1; //initlal text box count
    $(add_button).click(function(e){ //on add input button click
        e.preventDefault();

        if(x < max_fields){ //max input box allowed
            x++; //text box increment


            $(wrapper).append('<div><input type=\"text\" name=\"mytext[]\"/><a href=\"#\" class=\"remove_field\">Remove</a>');

        }
    });

    $(wrapper).on("click",".remove_field", function(e){ //user click on remove text
        e.preventDefault(); $(this).parent('div').remove(); x--;
    })
});

=================

編輯:

我已經使用過這個解決方案而且有效。

<?php require_once("../dbconnection/dbcon.php"); 

if(isset($_POST['submit']))
{
    $capture_field_vals ="";
    foreach($_POST["msgrecipient"] as $key => $text_field)
    {
        echo "Key: $key; Value: $text_field<br />\n";

        echo "<br>";

    }
        foreach($_POST["enquiry"] as $key => $text_field2)
        {
        echo "Key: $key; Value: $text_field2<br />\n";

        echo "<br>";
        }
}

    ?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Application</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
$(function () {
    $('#btnAdd').click(function () {
        var num = $('.clonedInput').length, // how many "duplicatable" input fields we currently have
            newNum = new Number(num + 1), // the numeric ID of the new input field being added
            newElem = $('#testingDiv' + num).clone().attr('id', 'testingDiv' + newNum).fadeIn('slow'); // create the new element via clone(), and manipulate it's ID using newNum value

        newElem.find('.test-select').attr('id', 'ID' + newNum + '_select').attr('name', 'ID' + newNum + '_select').val('');
        newElem.find('.test-textarea').val('');
         // insert the new element after the last "duplicatable" input field
        $('#testingDiv' + num).after(newElem);
        // enable the "remove" button
        $('#btnDel').attr('disabled', false);
        // right now you can only add 5 sections. change '5' below to the max number of times the form can be duplicated
        if (newNum == 5) $('#btnAdd').attr('disabled', true).prop('value', "You've reached the limit");
    });

    $('#btnDel').click(function () {
        // confirmation
        if (confirm("Are you sure you wish to remove this section of the form? Any information it contains will be lost!")) {
            var num = $('.clonedInput').length;
            // how many "duplicatable" input fields we currently have
            $('#testingDiv' + num).slideUp('slow', function () {
                $(this).remove();
                // if only one element remains, disable the "remove" button
                if (num - 1 === 1) $('#btnDel').attr('disabled', true);
                // enable the "add" button
                $('#btnAdd').attr('disabled', false).prop('value', "[ + ] add to this form");
            });
        }
        return false;
        // remove the last element

        // enable the "add" button
        $('#btnAdd').attr('disabled', false);
    });

    $('#btnDel').attr('disabled', true);
});
</script>
</head>
<body>
<form action="#" method="post">

    <!--
    ########################################## -->
    <!-- START CLONED SECTION -->
    <!-- ########################################## -->
 <div id="testingDiv1" class="clonedInput">

        <select name="msgrecipient[]" id="select">
            <option value="">Select Faculty</option>
              <?php
                require_once("../dbconnection/dbcon.php");
                $sql="SELECT * FROM user WHERE role='Faculty'";
                $records=mysqli_query($con,$sql);
                while($row=mysqli_fetch_assoc($records)){
                $name=$row['name'];
                echo "<option value='$name'>".$name."</option>";
                }

                ?>

              </select>

        <textarea id="textarea" name="enquiry[]" class="test-textarea"></textarea>

    </div>
    <!--/clonedInput-->
    <!-- ########################################## -->
    <!-- END CLONED SECTION -->
    <!-- ########################################## -->
    <!-- ADD - DELETE BUTTONS -->
    <div id="add-del-buttons">
        <input type="button" id="btnAdd" value="[ + ] add to this form">
        <input type="button" id="btnDel" value="[ - ] remove the section above">
    </div>
    <!-- /ADD - DELETE BUTTONS -->
    <input type="submit" name="submit"class="button button-block" value="Submit"/>
</form>


</body>
</html>

假設你有這樣的標記:

<form id="faculty_wrapper">
    <div class="faculty_row">
        <select id="faculty" name="faculty[]">
            <option value="faculty_one">faculty_one</option>
            <option value="faculty_one">faculty_two</option>
            <option value="faculty_one">faculty_three</option>
            <option value="faculty_one">faculty_four</option>
        </select>
        <input type="text" name="message[]">
    </div>
</form>

<a href="#" id="add_more">Add More</a> <!-- Add More Rows -->
<a href="#" id="submit">Submit</a>  <!-- Submit Button for further work -->

使用Javascript:

jQuery(document).ready(function($){

   $("#add_more").on('click', function(e){
        e.preventDefault(); // Prevent Default the event
        var clone = $(".faculty_row").eq(0).clone(); // clone only first item
        $("#faculty_wrapper").append(clone); // append it to our form
   });

    $("#submit").on('click', function(e){
       e.preventDefault();
        alert($("#faculty_wrapper").serialize()); // get serialize data for further work
    })
})

你可以查看工作的Jsfiddle

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM