为什么我的表单字段只是部分提交?

时间:2016-10-10 16:26:28

标签: php forms

我正在开发一个动态表单,用户可以随时添加位置,我非常接近将其包装起来,但现在我意识到只有数组的第一部分正在提交。提交按钮位于末尾,所有字段使用[]相同。在我粘贴代码之前,我将首先介绍一下我如何测试该问题。首先,我的数据库中没有其他数据 - 只有第一个位置。其次,当我执行var_dump时,数组只显示第一个位置。

<div id="locInformation">
<form name="assessment" action="create_new_record.php" method="post" enctype="multipart/form-data">

<input type="hidden" name="id" value="<?=$id?>">
<p>Location: <input type="text" name="location[]"  > </p>
<p>Department name: <input type="text" name="department_name[]"  > </p>
<p>Participant name: <input type="text" name="participant_name[]" > </p>
<p>Activity performed: <textarea cols="25" rows="3" name="activity[]" ></textarea> </p>
<p>Conditon: <select class="form-control" name="condition[]" style="width:20%;">
  <option value="dry" id="dry">Dry</option>
  <option value="heavy_oil" id="heavy_oil">Heavy Oil/Grease</option>
  <option value="light_oil" id="light_oil">Light Oil</option>
  <option value="sandy" id="sandy">Sandy/Grit</option>
  <option value="wet" id="wet">Slightly Wet</option>
</select></p>

<div class="well">
<p>Avg Number of Non-recordable Injuries: <input type="number" name="non_rec_injuries[]" >
 <select name="non_rec_injury_timeframe[]">
    <option value="last month">Last month</option>
    <option value="last 6 months">Last 6 months</option>
    <option value="last 12 months">Last 12 months</option>
 </select>
</p>
<h4>Based on the number of Non-recordable Injuries - Estimate the Injury Type by Percentage </h4>
<div class="container-fluid">
  <div class="form-group row">
    <div class="col-md-3 col-sm-4"><input class="form-control" name="non_rec_cuts[]" type="number" min="0" max="100" value="" placeholder="Cuts / Lacerations / Abrasion" > </div>
    <div class="col-md-3 col-sm-4"><input class="form-control" name="non_rec_burns[]" type="number" min="0" max="100" value="" placeholder="Heat or Chemical Burn" ></div>
    <div class="col-md-3 col-sm-4"><input class="form-control" name="non_rec_infection[]" type="number" min="0" max="100" value="" placeholder="Infection" > </div>
    <div class="col-md-3 col-sm-4"><input class="form-control" name="non_rec_dermatitis[]" type="number" min="0" max="100" value="" placeholder="Dermatitis" > </div>
    <div class="clearfix visible-xs-block"></div> <div class="hidden-xs hidden-sm"><br ><br ></div>
    <div class="col-md-3 col-sm-4"><input class="form-control" name="non_rec_puncture[]" type="number" min="0" max="100" value="" placeholder="Puncture" ></div>
    <div class="col-md-3 col-sm-4"><input class="form-control" name="non_rec_sprain[]" type="number"  min="0" max="100" value="" placeholder="Carpal Tunnel / Sprain" ></div>
    <div class="col-md-3 col-sm-4"><input class="form-control" name="non_rec_impact[]" type="number" min="0" max="100" value="" placeholder="Impact / Contusion / Inflammation" >
    </div>
  </div>
</div>
</div>

<p>Estimated Cost of Productivity (Downtime)/minute: $ <input type="number" name="cost_of_productivity[]" > </p>
<p>Percent of leakage related to uncontrolled dispensing: <input type="number" min="0" max="100" name="leakage[]" > % </p>
<p>Which competitor is the participant using?  <input type="text" name="competitor[]" ></p>
<p>Usage Rate per 12 months (pairs): <input type="number" min="0" name="usage_rate[]" ></p>
<p>Estimated cost per pair: $ <input type="number" min="0" name="cost_per_pair[]" ></p>
<br >     

<!--<input style="margin-left:10px;" class="btn btn-warning" type="button" value="Remove Location" onclick="removeLoc('locInformation','additionalLoc'); ">-->

<div class="hidden" id="additionalLoc" >
<br><p>Location: <input type='text' name='location[]'  > </p>
<p>Department name: <input type='text' name='department_name[]'  > </p>
<p>Participant name: <input type='text' name='participant_name[]' > </p>
<p>Activity performed: <textarea cols='25' rows='3' name='activity[]' ></textarea> </p>
<p>Conditon: <select class='form-control' name='condition[]' style='width:20%;'>
  <option value='dry' id='dry'>Dry</option>
  <option value='heavy_oil' id='heavy_oil'>Heavy Oil/Grease</option>
  <option value='light_oil' id='light_oil'>Light Oil</option>
  <option value='sandy' id='sandy'>Sandy/Grit</option>
  <option value='wet' id='wet'>Slightly Wet</option>
</select></p>

<div class="well"> 

<p>Avg Number of Non-recordable Injuries: <input type='number' name='non_rec_injuries[]' >
 <select name='non_rec_injury_timeframe[]'>
    <option value='last month'>Last month</option>
    <option value='last 6 months'>Last 6 months</option>
    <option value='last 12 months'>Last 12 months</option>
 </select>
</p>
<h4>Based on the number of Non-recordable Injuries - Estimate the Injury Type by Percentage </h4>
<div class='container-fluid'>
  <div class='form-group row'>
    <div class='col-md-3 col-sm-4'><input class='form-control' name='non_rec_cuts[]' type='number' min='0' max='100' value='' placeholder='Cuts / Lacerations / Abrasion' > </div>
    <div class='col-md-3 col-sm-4'><input class='form-control' name='non_rec_burns[]' type='number' min='0' max='100' value='' placeholder='Heat or Chemical Burn' ></div>
    <div class='col-md-3 col-sm-4'><input class='form-control' name='non_rec_infection[]' type='number' min='0' max='100' value='' placeholder='Infection' > </div>
    <div class='col-md-3 col-sm-4'><input class='form-control' name='non_rec_dermatitis[]' type='number' min='0' max='100' value='' placeholder='Dermatitis' > </div>
    <div class='clearfix visible-xs-block'></div> <div class='hidden-xs hidden-sm'><br ><br ></div>
    <div class='col-md-3 col-sm-4'><input class='form-control' name='non_rec_puncture[]' type='number' min='0' max='100' value='' placeholder='Puncture' ></div>
    <div class='col-md-3 col-sm-4'><input class='form-control' name='non_rec_sprain[]' type='number'  min='0' max='100' value='' placeholder='Carpal Tunnel / Sprain' ></div>
    <div class='col-md-3 col-sm-4'><input class='form-control' name='non_rec_impact[]' type='number' min='0' max='100' value='' placeholder='Impact / Contusion / Inflammation' ></div>
  </div>
</div>
</div>

<p>Estimated Cost of Productivity (Downtime)/minute: $ <input type='number' name='cost_of_productivity[]' > </p>
<p>Percent of leakage related to uncontrolled dispensing: <input type='number' min='0' max='100' name='leakage[]' > % </p>
<p>Which competitor is the participant using?  <input type='text' name='competitor[]' ></p>
<p>Usage Rate per 12 months (pairs): <input type='number' min='0' name='usage_rate[]' ></p>
<p>Estimated cost per pair: $ <input type='number' min='0' name='cost_per_pair[]' ></p>

</div>

</div>
<br >
<input style="margin-left:5px;" class="btn btn-primary" type="button" value="Add Additional Location"  onClick="addInput('locInformation');">
<input style="margin-left:10px;" class="btn btn-success submit" type="submit" name="submit" value="Submit Assessment">

</form>
<br >

</div>

    </body>
</html>

我唯一想到的是动态领域的JS搞砸了什么。 div additionalLoc有一个class="hidden"标记,因此它不会在初始加载时显示。我进行了搜索并遇到了一些类似问题,但答案不适用,例如Part of form doesn't submit

1 个答案:

答案 0 :(得分:0)

好的,我现在有这个工作。问题出在我的HTML上。在认为JS或PHP是问题后退了一步,我得出结论,HTML可能是这里的问题。使用https://validator.w3.org/之类的工具查看HTML,确定了一些问题,一旦更正,表单就会按预期工作。

第一个问题是我有多个id字段(无论如何都不需要)并且字段不是唯一的 - 如果使用id则需要这些字段。

其次,问题是额外的</div>导致格式化问题。

第三,我将JS额外位置div从class="hidden"更改为style="display:none"

相关问题