Dynamically Generate Multiple TextBoxes in ASP.Net

Here, you will see how to create multiple TextBoxes and Tabs dynamically using jQuery scripts and CSS.

I hope this code is very helpful for creating a paper format for an online examination project. Check it out. If you have any concerns then let me know.

Add CSS and JavaScript file references

I need to add a CSS and jQuery reference to create a tab on a page.

<link href="css/jquery-ui-1.9.2.custom.min.css" rel="stylesheet" type="text/css" />
<script src="jquery/jquery-1.8.3.js" type="text/javascript"></script>
<script src="jquery/jquery-ui-1.9.2.custom.min.js" type="text/javascript"></script>

Create a UI for entering the number of TextBoxes you want to generate, also create the tabs.

I use a table for creating a TextBox and a Button. The following figure shows the structure table.

<body>
    <form id="form1" runat="server">
        <table>
            <tr>
                <td>
                    <asp:Label ID="lbltextno" runat="server" Text="Enter Number Of TextBox"></asp:Label>
                </td>
                <td>
                    <input type="text" id="txtpaper" />
                </td>
                <td>
                    <input type="button" value="Click" id="show" onclick="GetTextBox()" />
                </td>
            </tr>
        </table>
    </form>
</body>

After creating the table for entering the number of TextBoxes you want to generate, I use an unordered list to create the tabs.

The following figure shows the structure of the unordered list for the tabs.

<div id="tabs" style="display:none">
    <ul>
        <li><a href="#part1">Part1</a></li>
        <li><a href="#part2">Part2</a></li>
        <li><a href="#part3">Part3</a></li>
        <li><a href="#part4">Part4</a></li>
    </ul>
</div>

Contents For Tabs

In these tabs I need to generate a TextBox limited in size, in other words, the first tabs show only 5 TextBoxes, and if you want to create more than show tab2 and greeted then 5 data are shown in the next tabs, tab2, tab3 & tab4. At the end of the TextBoxes show, the submit button.

For this, we generate a div in a div.

The following figure shows the structure of the Content for tabs.

<div id="part1">
    <div id="part1btn"></div>
</div>

<div id="part2">
    <div id="part2btn">
    </div>
</div>

<div id="part3">
    <div id="part3btn">
    </div>
</div>

<div id="part4">
    <div id="part4btn">
    </div>
</div>

Use Of Tabs

Using tabs dynamically generates TextBoxes that are not shown together, they are divided by tabs.

Entire Code

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MutipleTexbox.aspx.cs" Inherits="MultipleTexboxUsingJquery.MutipleTexbox" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head id="Head1" runat="server">
    <title></title>
    <link href="css/jquery-ui-1.9.2.custom.min.css" rel="Stylesheet" type="text/css" />
    <script src="jquery/jquery-1.8.3.js" type="text/javascript"></script>
    <script src="jquery/jquery-ui-1.9.2.custom.min.js" type="text/javascript"></script>
    <script type="text/javascript" language="javascript">
        function GetTextBox() {
            debugger;
            $("#tabs").tabs();
            var txtid = $("#txtpaper").val();
            var tab1 = document.getElementById("part1");
            var tab2 = document.getElementById("part2");
            var tab3 = document.getElementById("part3");
            var tab4 = document.getElementById("part4");
            var btnsubmit = document.getElementById("btnsubmit");
            var tabs;
            var fieldArray = ['Question', 'Ans1', 'Ans2', 'Ans3', 'Ans4', 'Correct Answer'];
            for (var i = 1; i <= txtid; i++) {
                if (i <= 5) {
                    tabs = tab1;
                    alert("Enter More than 5");
                } else if (i > 5 && i <= 10) {
                    $("#tabs").show();
                    $("#ui-id-3").hide();
                    $("#ui-id-4").hide();
                    $("#part2btn").html('<input type="button" id="btnsubmit" value="Submit" />');
                    $("#part3btn").hide();
                    $("#part4btn").hide();
                    tabs = tab2;
                } else if (i > 10 && i <= 15) {
                    $("#tabs").show();
                    $("#part3btn").html('<input type="button" id="btnsubmit" value="Submit"/>');
                    $("#part3btn").show();
                    $("#ui-id-3").show();
                    $("#ui-id-4").hide();
                    $("#part2btn").hide();
                    $("#part4btn").hide();
                    tabs = tab3;
                } else if (i > 15) {
                    $("#tabs").show();
                    $("#ui-id-4").show();
                    $("#part4btn").html('<input type="button" id="btnsubmit" value="Submit"/>');
                    $("#part4btn").show();
                    $("#part2btn").hide();
                    $("#part3btn").hide();
                    tabs = tab4;
                }
                for (var j = 0; j < 6; j++) {
                    var a = fieldArray[j];
                    if (j == 0) {
                        a += i.toString();
                        tabs.innerHTML = tabs.innerHTML + a + '<Textarea id="id' + i.toString() + j.toString() + '"></Textarea><br><br><br>';
                    } else {
                        tabs.innerHTML = tabs.innerHTML + a + '<input name="DynamicTextBox" type="text" id="id' + i.toString() + j.toString() + '"/><br><br><br>';
                    }
                }
            }
        }
    </script>
</head>

<body>
    <form id="form1" runat="server">
        <table>
            <tr>
                <td>
                    <asp:Label ID="lbltextno" runat="server" Text="Enter Number Of TextBox"></asp:Label>
                </td>
                <td>
                    <input type="text" id="txtpaper" />
                </td>
                <td>
                    <input type="button" value="Click" id="show" onclick="GetTextBox()" />
                </td>
            </tr>
        </table>
        <div id="tabs" style="display: none">
            <ul>
                <li><a href="#part1">Part1</a></li>
                <li><a href="#part2">Part2</a></li>
                <li><a href="#part3">Part3</a></li>
                <li><a href="#part4">Part4</a></li>
            </ul>
            <div id="part1">
                <div id="part1btn">
                </div>
            </div>
            <div id="part2">
                <div id="part2btn">
                </div>
            </div>
            <div id="part3">
                <div id="part3btn">
                </div>
            </div>
            <div id="part4">
                <div id="part4btn">
                </div>
            </div>
        </div>
    </form>
</body>

</html>

Output

Output

This output means, that if you enter 1 to 5 then TextBoxes does not show the 6 required and that means the 6-question format shows 36 TextBoxes.

  • 1st for Question,
  • 2nd for Answer2,
  • 3rd Answer3,
  • 4th Answer4,
  • 5th Correct Answer

In this ans1, 2, 3, and 4 are options.


Similar Articles