jQuery替换输入对象后PHP表单不工作

jQuery替换输入对象后PHP表单不工作,php,jquery,Php,Jquery,我有一个带有select对象的表单。选项是使用PHP从mySQL数据库生成的。我还有一个“新”的选择。如果用户选择“new”,我将使用jQuery-replaceWith函数将select对象更改为input type='text'对象 这一切都很好,除了在提交表单之后,PHP$_POST['description'][0]是空的。为什么会这样?下面我复制了select对象和jQuery的快照 jQuery: $(function() { $('select#description').

我有一个带有select对象的表单。选项是使用PHP从mySQL数据库生成的。我还有一个“新”的选择。如果用户选择“new”,我将使用jQuery-replaceWith函数将select对象更改为input type='text'对象

这一切都很好,除了在提交表单之后,PHP$_POST['description'][0]是空的。为什么会这样?下面我复制了select对象和jQuery的快照

jQuery:

$(function() {
    $('select#description').change(function() {
        if ($(this).val() == 'new')
        var x = $(this).attr('name');
        $(this).replaceWith('<input type="text" name="description" id="description">');
        $('input#description').attr('name', x);
        $('input#description').attr('id', x);
    });
});

但它不会回显文本框中键入的内容。为什么最后一个条目是空的?

因为您在接受答案时已将description[$i]替换为description

:下面描述的解决方案不正确。这个答案的注释中的对应关系似乎导致了解决方案

您的问题似乎是尝试回显POST变量的方式: echo$\u POST['description'][0]永远不会提供输入文本的值,因为此字段的名称为description[0],因此您需要调用echo$\u POST['description[0]]


如果这不能解决您的问题,并且您不熟悉var_export:尝试发布一篇print_r$\u帖子;在page2.php中的while循环上方/下方,并让我们了解输出。

如果HTML/php?你给出的是代码本身。var\u export$\u POST怎么说?这里有任何与描述相关的内容吗?抱歉,我不知道如何使用“var\u export$\u POST”,我只知道一旦我单击提交并要求PHP回显$\u POST,它就会显示为空,这可能是因为PHP无法识别输入,因为它被jQuery替换了吗?请发布一个phpfidle或其他东西这是您要求的Prodikl或其他东西,我不确定这是否有助于您更好地理解。var x=description[$i]然后我使用了$'inputdescription'.attr'name',x;要将名称改回description[$i],感谢您的指导。我改变了我的代码以另一种方式工作,但是我仍然想知道我用这段代码做错了什么。打印$\u邮政;给出:数组【项目编号】=>2【pin】=>n个项目【承包编号】=>1【线路】=>3【资产编号】=>1[1]=>1[2]=>1[数量】=>数组[0]=>1[1]=>3[2]=>5【单价】=>数组[0]=>2[1]=>4[2]=>6[Save]=>Save我需要在列表中看到以下内容,但它不在那里。[description]=>Array[0]=>apples[1]=>pears[2]=>oranges我认为因为jQuery在页面加载后替换了输入,所以它不再被视为表单的一部分,这是可能的吗?事实上我只是证明了自己错了,显然表单提交实际上将['description[0]]转换为['description']['0'],我似乎还需要学习自己。我获取了phpfiddle的代码,并在本地进行了测试——它是有效的。我的输出包括打印\u r:Array[description]=>Array[0]=>test1[1]=>test2[2]=>test3[submit]=>submittest1test2test3。您是否在任何时候更改了通过jQuery提交的表单?LOL我很幸运,我编写的代码对您有效,但对我无效。jQuery中没有任何东西可以改变这个表单。可能是因为我使用chrome作为浏览器,所以我真的没有什么可以考虑的了。但是很高兴知道代码正在工作。我建议将这个问题导出到一个独立的版本,而不需要像我那样使用任何周围的代码。我使用了两个php文件,删除了main文件的周围函数,并在main文件的echo中包含jQuery和您的JS。它在Firefox和Chrome中对我有效。它是否可以作为独立版本为您服务?
<td>
   <select id='description' name='description[$i]'>
                        <option value=''></option>
                        <option name='[$i]' value='new'>new</option>";
                        echo $list = $this->desc_list();
echo "      </select>
 </td>
<select id='description' name='description[0]'>
<option value></option>
<option value='new'>new</option>
<option value='1'></option>
</select>
<input type='text' name='description[0]' id='description[0]'>
echo $_POST['description'][0]