【问题标题】:How to retrieve text of dynamically create textbox in another php file using POST method?如何使用 POST 方法在另一个 php 文件中检索动态创建文本框的文本?
【发布时间】:2018-08-25 18:04:36
【问题描述】:

我在单击某个按钮时动态创建了一个文本框,现在我想从文本框中检索文本以显示在另一个 php 表单页面上。 以下是我的 html 代码,其中我将名称 "c1""c2""c3" 分配给动态创建的文本框。

<script>
            $(document).ready(function(){
            $("#t11, #t12").click(function(){
                var div = $("<div />"); 
        div.html(GenerateTextbox("","c1"));
        $("#TextBoxContainer").append(div);
                 var div = $("<div />");
        div.html(GenerateTextbox("","c2"));  
        $("#TextBoxContainer").append(div);
                 var div = $("<div />");
        div.html(GenerateTextbox("","c3")); 
        $("#TextBoxContainer").append(div);
            });
});
function GenerateTextbox(value,name1) {
            console.log(name1);
    return '<input name = "'+ name1 + '" type="text" value = "' + value + '" /> ';} 
</script>

我在另一个文档中的 php 代码:

<td>
                <input type="<?php echo $_POST["t1"];?>"> <?php echo $_POST["c1"];?> 
                <input type="<?php echo $_POST["t1"];?>"><?php echo $_POST["c2"];?>
                <input type="<?php echo $_POST["t1"];?>"><?php echo $_POST["c3"];?>
            </td>

当第二个 php 页面被定向到时,它说 c1c2c3 是未定义的索引。其他一切正常,但我无法从一页到另一页获取此信息。

请帮忙!

完整的html:

<table align="center">
    <form action="output.php" method="post">
    <tr> 
        <td>
        Background color of page:<br/>
        </td>
        <td>
   <input id="ex" type="color" name="bgcol" id="nbg">
        </td> 
    </tr>
        <tr> 
        <td>
        Name of form:
        </td>
        <td>
        <input type="text" name="titleform" id="titleform">
        </td>
     </tr>
        <tr> 
        <td>
        Font size:
        </td>
        <td>
        <input type="text" name="fontsize" id="fontsz">
        </td>
    </tr>
        <tr> 
        <td>
        Font:
        </td>
        <td>
        <input type="text" name="fontt" id="nbg">
        </td>  
    </tr>
        <tr> 
        <td>
        Font color:
        </td>
        <td>
        <input id="ex"type="color" name="fontt" id="nbg">
        </td>  
    </tr>
        <tr> 
        <td>
        Background color of form:<br/>
        </td>
        <td>
        <input id="ex" type="color" name="bgcolor" id="nbg" value="#FFFFFF">
        </td>   
    </tr>
        <tr> 
        <td>
        Input #1:
        </td>
        <td>
        <input type="text" name="input1" id="nbg">
        </td>     
        <td>
        Type:
        </td>
        <td>
             <select name="t1" id="t1">
        <option>text</option>
        <option id="t11">radio</option>
        <option id="t12">checkbox</option>
    </select>
            </td>
            <td>
            <div id="TextBoxContainer">  
    <!--Textboxes will be added here -->  
</div>
            </td>

        <tr> 
        <td>
        Input #2:
        </td>
        <td>
        <input type="text" name="input2" id="nbg">
        </td>  
        <td>
        Type:
        </td>
        <td>
        <select name="t2">
        <option>text</option>
        <option id="t21">radio</option>
        <option id="t22">checkbox</option>
    </select>
        </td>  
            <td>
            <div id="TextBoxContainer2">  
    <!--Textboxes will be added here -->  
</div>
            </td>
    </tr>
        <tr> 
        <td>
        Input #3:
        </td>
        <td>
        <input type="text" name="input3" id="nbg">
        </td>  
        <td>
        Type:
        </td>
        <td>
        <select name="t2">
        <option>text</option>
        <option id="t31">radio</option>
        <option id="t32">checkbox</option>
    </select>
        </td>
            <td>
            <div id="TextBoxContainer3">  
    <!--Textboxes will be added here -->  
</div>
            </td>
    </tr>
        <tr> 
        <td>
        Input #4:
        </td>
        <td>
        <input type="text" name="input4" id="nbg">
        </td>
        <td>
        Type:
        </td>
        <td>
        <select name="t4">
        <option>text</option>
        <option id="t41">radio</option>
        <option id="t42">checkbox</option>
    </select>
        </td>  
            <td>
            <div id="TextBoxContainer4">  
    <!--Textboxes will be added here -->  
</div>
            </td>
    </tr>
        <tr> 
        <td>
        Input #5:
        </td>
        <td>
        <input type="text" name="input5" id="nbg">
        </td>   
        <td>
        Type:
        </td>
        <td>
        <select name="t5">
        <option>text</option>
        <option id="t51">radio</option>
        <option id="t52">checkbox</option>
    </select>
        </td>
            <td>
            <div id="TextBoxContainer5">  
    <!--Textboxes will be added here -->  
</div>
            </td>
    </tr>
        <tr>
        <td>
            <button type="submit" name="Create_form" id="form2" value="submit" onclick="return check()"> >Submit
            </button>   
            </td>
        </tr>
    </form>
</table> 

【问题讨论】:

  • 请显示 GenerateTextbox。这些文本框是否在带有 method=post 的表单中?
  • 在编辑中添加.. 是的,文本框在带有方法 post 的表单中
  • 让我们看看你的表格。
  • 已添加完整表格

标签: javascript php jquery html post


【解决方案1】:

您需要将 div 附加到 DOM,尤其是作为 form 的子元素。否则,&lt;input&gt;s 永远不会得到POSTed。

$("#myForm").append(div);

另外,由于您首先使用 jQuery 来操作您的 div 和表单,我建议您继续使用 jQuery 来构建内部 inputs,而不仅仅是在您的 GenerateTextbox 函数中提供内部 HTML。

【讨论】:

  • @Transhiv2 您的 HTML 中还有其他几个缺陷,第一个是不建议将 form 标签放在 table 标签内,而您的 trs 仍在里面form。所以,我猜您将div 容器附加到一个不应该向您显示任何内容的节点(通常在任何trtd 之外,但仍在form 内部,而form 本身就在@ 987654336@).
  • (顺便说一句,我认为它们根本没有出现,当你甚至没有尝试将它们附加到 DOM 之前,对吗?)
猜你喜欢
  • 2012-12-21
  • 1970-01-01
  • 1970-01-01
  • 2013-02-06
  • 2020-07-13
  • 1970-01-01
  • 2013-05-17
  • 1970-01-01
  • 2011-03-28
相关资源
最近更新 更多