Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在具有多行且动态构建的datatable中提交表单?_Javascript_Php_Jquery_Html_Forms - Fatal编程技术网

Javascript 如何在具有多行且动态构建的datatable中提交表单?

Javascript 如何在具有多行且动态构建的datatable中提交表单?,javascript,php,jquery,html,forms,Javascript,Php,Jquery,Html,Forms,好的,我真的不太擅长在这里提交问题,所以如果我没有正确地获得所有的标记,请对我放松。我正在构建一个包含数据行的表单,其中有几个字段是输入,所有行都包含匹配的数据。也就是说,每行包含相同的字段。这是我的表单的html echo "<div id='display-wrapper' style='position:absolute; left:-100000px;'><form method='post'><table id='uploan' class='ta

好的,我真的不太擅长在这里提交问题,所以如果我没有正确地获得所有的标记,请对我放松。我正在构建一个包含数据行的表单,其中有几个字段是输入,所有行都包含匹配的数据。也就是说,每行包含相同的字段。这是我的表单的html

echo "<div id='display-wrapper' style='position:absolute;
    left:-100000px;'><form method='post'><table id='uploan' class='table-striped table-bordered'><thead><tr>";
        $TtlReactHeaderNames = array_keys($TtlReactQuery[1]);
        foreach($TtlReactHeaderNames as $TtlReactkey=>$TtlReactvalue) {
            echo "<th>" . $TtlReactvalue . "</th>";
        }    
        echo "<th class='green'>Revised BB Value</th><th class='green'>Revised Max Loan Capacity</th></tr></thead><tbody>";
        foreach($TtlReactQuery as $TtlReactkey=>$TtlReactvalue) {
            echo "<tr>";
            echo "<td>" . $TtlReactvalue['Store Name'] . "</td>";
            echo "<td>" . $TtlReactvalue['VIN Number'] . "</td>";
            echo "<td><input type='text' name='display-name' value='" . $TtlReactvalue['Full Name'] . "' readonly /></td>";
            echo "<td>" . $TtlReactvalue['SSN(Last Four)'] . "</td>";
            echo "<td>" . $TtlReactvalue['Ecash Vehicle Value'] . "</td>";
            echo "<td>" . $TtlReactvalue['Max Capacity'] . "</td>";
            echo "<td><input type='text' name='revised-bb-value' /></td>";
            echo "<td><input type='text' name='revised-max-loan-capacity' /></td>";
            echo "</tr>";
        }
        echo "</tbody></table><input type='submit' /></form></div>";
echo”“;
$TtlReactHeaderNames=数组_键($TtlReactQuery[1]);
foreach($TtlReactHeaderNames as$TtlReactkey=>$TtlReactvalue){
回显“$TtlReactvalue.”;
}    
echo“修订BB值修订最大贷款能力”;
foreach($TtlReactQuery作为$TtlReactkey=>$TtlReactvalue){
回声“;
回显“$TtlReactvalue['Store Name']”;
回显“$TtlReactvalue['VIN Number']”;
回声“;
回显“$TtlReactvalue['SSN(最后四个)'”;
回显“$TtlReactvalue['Ecash Vehicle Value']”;
echo“$TtlReactvalue['Max Capacity']”;
回声“;
回声“;
回声“;
}
回声“;

…此表单中大约有200行数据。最终用户将只选择一行,在空白字段中填写信息并提交。但现在,它只会提交最后一行中的内容,因为所有输入的行都具有相同的名称。我曾想过添加一个计数器,并在name属性后面添加数字,这样每个字段都有一个唯一的名称,但当我提交它时,POST数组中会出现一堆空字段,尽管数据也在那里,我不知道它们将填充哪一行,所以我不知道从POST数据中获取什么。有人建议使用javascript创建一个隐藏的表单来填充表单,但我不确定该怎么做。任何帮助都将不胜感激

输入肯定有不同的名称。计数器方法是一种很好的方法,但您必须将其附加在名称之后(例如:display-name0,而不是0display name)


然后在提交时,循环所有行,仅对已填充值的行调用提交函数。

通过创建一个大表单,您需要为每个字段使用不同的名称。更好的解决方案是在表单上创建每行数据。这样,您将有许多具有相同字段的表单,但只发送一个。

有三个选项:

选项1:

由于默认情况下所有输入都为空,请更改输入名称以包含一组括号:
。这将为您提供一个值数组。假设您有相同数量的输入,
$\u POST['revised-bb-value'][5]
将与
$\u POST['display-name'][5]
位于同一行。您需要做的就是循环输入:

for($i = 0; $i < count($_POST['display-name']; $i++) {
   if($_POST['revised-bb-value'][$i] == '' && $_POST['revised-max-loan-capacity'][$i]  == '')
      continue;
   }

   /* process row */
}
行的onClick函数会将其更改为:

<td id='row-bb-value[1365]' data-original='30k'><input type='text' name='revised-bb-value' value='30k' /></td>

您可以对行中的每个可编辑项执行此操作


优点是,您可以在一个表单中进行多个编辑(选项1的好处,选项2的限制),无需额外的按钮或html(选项2的限制),也无需所有的空行(选项1的缺点)。

每行创建一个表单,而不是为所有内容创建一个大表单。现在,如果这不是OMG时刻,那么没有任何内容!谢谢你,它工作得很好@JoseManuelAbarcaRodríguez如果您能将您的评论作为答案提交,我会将其标记为我的正确答案。非常感谢,答案很简单,我就是看不出来。它就像一个魅力!!!现在是答案了谢谢。我采用了多种形式的概念,效果非常好!
<td id='row-bb-value[1365]' data-original='30k'><input type='text' name='revised-bb-value' value='30k' /></td>