【问题标题】:Dynamically add form fields with jquery not posting使用jquery动态添加表单字段不发布
【发布时间】:2013-09-24 05:19:46
【问题描述】:

我已成功设置表单并使其正常工作。但是我有一个问题

我从这里得到了这个 Jquery

http://jsfiddle.net/34rYv/25/

一切正常,但是当我将数据发布到未发送的新创建的 tcpdf 行时,我也想添加到数据库中,请任何知道答案的人都非常感谢。 这是我的代码

<script type="text/Javascript">
$(document).ready(function() {
    $('#btnAdd').click(function() {
        var num     = $('.clonedSection').length;
        var newNum  = new Number(num + 1);

        var newSection = $('#pq_entry_' + num).clone().attr('id', 'pq_entry_' + newNum);

        newSection.children(':first').children(':first').attr('id', 'quantity_' + newNum).attr('name', 'quantity_' + newNum);
        newSection.children(':nth-child(2)').children(':first').attr('id', 'rcptdelvry_' + newNum).attr('name', 'rcptdelvry_' + newNum);
        newSection.children(':nth-child(2)').children(':first').attr('id', 'weight_' + newNum).attr('name', 'weight_' + newNum);
        newSection.children(':nth-child(2)').children(':first').attr('id', 'volume_' + newNum).attr('name', 'volume_' + newNum);

        newSection.insertAfter('#pq_entry_' + num).last();

        $('#btnDel').prop('disabled','');

        if (newNum == 5)
            $('#btnAdd').prop('disabled','disabled');
    });

    $('#btnDel').click(function() {
        var num = $('.clonedSection').length; // how many "duplicatable" input fields we currently have
        $('#pq_entry_' + num).remove();     // remove the last element

        // enable the "add" button
        $('#btnAdd').prop('disabled','');

        // if only one element remains, disable the "remove" button
        if (num-1 == 1)
            $('#btnDel').prop('disabled','disabled');
    });

    $('#btnDel').prop('disabled','disabled');
});
</script>

这是我的 Html 部分

<fieldset>
        <ul id="pq_entry_1" class="clonedSection">
      <label class="textfield">QUANTITY
      <li><input type="text" name="quantity_1" id="quantity_1"></li>
      <br class="clear">
      </label>

      <label class="textfield">TYPE<br>
   <li><select name="rcptdelvry_1" id="rcptdelvry_1">
    <option value="">-- Please Select --</option>
    <optgroup label="LCL CARGO">
    <option value="PACKAGES">PACKAGES</option>
    <option value="CARTONS">CARTONS</option>
    <option value="BALES">BALES</option>
    <option value="BOX">BOX</option>
    <option value="PALETTES">PALETTES</option>
    <option value="CRATE">CRATE</option>
    </optgroup>
    <optgroup label="FULL CONTAINER">
    <option value="20' Bulk (with roof hatches)">20' Bulk (with roof hatches)</option>
    <option value="20' Collapsible Flat Rack">20' Collapsible Flat Rack</option>
    <option value="20' Dry">20' Dry</option>
    <option value="20' Flat Rack">20' Flat Rack</option>
    <option value="20' Highvent w/o roof hatches">20' Highvent w/o roof hatches</option>
    <option value="20' Open Top">20' Open Top</option>
    <option value="20' Porthole (conair)">20' Porthole (conair)</option>
    <option value="20' Reefer">20' Reefer</option>
    <option value="20' Tank">20' Tank</option>
    <option value="40' Artificial Tweendeck">40' Artificial Tweendeck</option>
    <option value="40' Collapsible Flat Rack">40' Collapsible Flat Rack</option>
    <option value="40' Dry">40' Dry</option>
    <option value="40' Flat Rack">40' Flat Rack</option>
    <option value="40' High Cube">40' High Cube</option>
    <option value="40' High Cube Reefer">40' High Cube Reefer</option>
    <option value="40' Open Top">40' Open Top</option>
    <option value="40' Starvent (9'6)">40' Starvent (9'6)</option>
    <option value="40' Tank">40' Tank</option>
    <option value="45' High Cube">45' High Cube</option>
    <option value="45' High Cube Reefer">45' High Cube Reefer</option>
    </optgroup>
    </select></li>
      <br class="clear">
      </label>

      <label class="textfield">WEIGHT (kg per container)
      <li><input type="tel" name="weight_1" id="weight_1"></li>
      <br class="clear">
      </label>

       <label class="textfield">VOLUME (cbm):
      <li><input type="tel" name="volume_1" id="volume_1"></li>
      <br class="clear">
      </label>
      </ul>

      </fieldset>
      <input type='button' id='btnAdd' size="15" value='add another row' />
<input type='button' id='btnDel' value='delete row' />
      </div>
      </div>

这是我的 tcpdf 部分

<td width="0" height="0">
 : {$_POST['quantity_1']}X{$_POST['rcptdelvry_1']}{$_POST['quantity_2']}X{$_POST['rcptdelvry_2']}
</td>

【问题讨论】:

    标签: javascript php jquery post tcpdf


    【解决方案1】:

    在这种情况下,使用标准的“提交”按钮提交表单将不起作用。 提交按钮不考虑页面加载后创建的表单域。

    您必须编写一个提交处理程序来序列化您的数据并将其发送到服务器。

    试试这样的:

    $('#yourFormID').on('submit', function(e) {
        //prevent the default submithandling
        e.preventDefault();
        //send the data of 'this' (the matched form) to yourURL
        $.post('yourURL', $(this).serialize());
    });
    

    在服务器端,您现在拥有填充了键和值的 $_POST 变量。

    您还可以检查在 firebug 或任何其他 webdeveloper 工具中发送的数据。

    编辑:

    我已经改变了你的小提琴以使用我的代码:

    http://jsfiddle.net/34rYv/67/

    我在您的输入周围包裹了一个 &lt;form&gt;&lt;/form&gt; 并添加了一个 &lt;input type='submit' /&gt; 按钮

    【讨论】:

    • @DKSan.. 谢谢你的代码,但我想知道把这段代码放在哪里,导致我对 jquery 的了解非常少......再次感谢
    • 还有更多的值添加到 pdf 文件中,但我无法弄清楚如何在动态元素中发送第二个值。
    • 只需将其放在'$(document).ready(function() { //yourCode }' 之后,并记住将 yourFormID 与实际表单 id 和 yourURL 与您要发送到的 url 进行交换。
    • @RajPawanGumdal 您是否尝试过在发布后检查服务器端的 $_FILES 数组?文档:php.net/manual/en/features.file-upload.post-method.php
    • @DKSan - 感谢您的回复,我发现了问题,我为此头疼。
      标记未环绕文件上传元素。许多其他 元素也是如此,但这些不是动态添加的,并且可能
      知道它,但是当 文件类型元素被动态添加时,即使带有“for”属性,表单也不会选择它。
    猜你喜欢
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多