Javascript 由jQuery return创建的表单字段;“未定义”;提交后

Javascript 由jQuery return创建的表单字段;“未定义”;提交后,javascript,jquery,forms,Javascript,Jquery,Forms,更新: 我使用第一个评论者的checkNo[]建议修改了代码,因为我认为这可能会有所帮助,而且它更优雅 表单的初始硬编码字段组看起来几乎相同,只是我删除了“1”,例如“checkNo1”现在只是“checkNo” 创建新字段组的jQuery现在只复制初始代码: var checksDiv = $('#checkForms'); var i = $('#checkForms p').length + 1; var checkForm = $('#checkForms').html(); //COP

更新: 我使用第一个评论者的checkNo[]建议修改了代码,因为我认为这可能会有所帮助,而且它更优雅

表单的初始硬编码字段组看起来几乎相同,只是我删除了“1”,例如“checkNo1”现在只是“checkNo”

创建新字段组的jQuery现在只复制初始代码:

var checksDiv = $('#checkForms');
var i = $('#checkForms p').length + 1;
var checkForm = $('#checkForms').html(); //COPY THE FIELD GROUP CODE

    $('#addCheck').click(function() {
           $(checkForm).appendTo(checksDiv);
           $('#checkCount').val(i);
           i++;
    });
循环现在看起来像这样:

for (i=1;i <= Request.Form("checkNo").Count; i++){ // LOOP THROUGH CHECKS 

        thisCheck = Request.Form("checkNo")(i);
        thisAmt = Request.Form("amt")(i);
        thisInvoices = Request.Form("invoices")(i);
}
<div id="checkForms">
  <p>
    <label for="checkNo1">
      <input type="text" id="checkNo1" size="20" name="checkNo1" value="" placeholder="Check Number" />
    </label>
    <label for="amt1">
      | $<input type="text" id="amt1" size="20" name="amt1" value="" placeholder="Amount" />
    </label>
    <br/>
    <label for="invoices1">
      <textarea name="invoices1" id="invoices1" placeholder="Invoice Amt" cols="50" rows="10"></textarea>
    </label>
  </p>
  <hr/>
</div>

<h3><a href="javascript:void(0)" id="addCheck">Add Another Check</a></h3>

<input type="hidden" id="checkCount" name="checkCount" value="1"> 
<input type="submit" name="submit" value="send" class="button sendit"> 
var checksDiv = $('#checkForms');
var i = $('#checkForms p').size() + 1;

    $('#addCheck').click(function() {
            $('<p><label for="checkNo' + i +'"><input type="text" id="checkNo' + i +'" size="20" name="checkNo' + i +'" placeholder="Check Number" /></label> | $<label for="amt' + i +'"><input type="text" id="amt' + i +'" size="20" name="amt'+ i +'" placeholder="Amount" /></label><br/><label for="invoices' + i +'"><textarea name="note" placeholder="Invoice Amt" cols="50" rows="10"></textarea></label><a href="javascript:void(0)" class="remCheck">Remove</a></p><hr/> ').appendTo(checksDiv);
            $('#checkCount').val(i);
            i++;
    });
for (i=1;i <= checkCount; i++){
    thisCheck = Request.Form("checkNo"+i);
    thisAmt = Request.Form("amt"+i);
etc....

for(i=1;i您发布的服务器端代码应该可以工作,但是您忽略了
等…
,这会很有趣

在硬编码部分中有一个名为
invoices1
的文本区域,但在动态部分中,您没有创建一个text区域
'invoices'+i
,该文本区域的名称是
note
(无索引)


当您尝试使用与其他字段相同的过程访问这些textarea时,将失败。

$(集合).size()
已被弃用,不应再使用。请改用
$(集合).length
(请注意缺少括号-这是一个属性,因此没有函数调用的开销).什么是
Request
?服务器端或客户端对象?为什么不使用
checkNo[]
names?“Request”是服务器端..表单发布到它所在的同一页面,请求值的JS在任何HTML@undefined我试着用支票重新书写整件事正如我想你的意思。因此,现在创建新字段组的jQuery只复制了原始字段组,没有数字规范,例如字段名“amt1”和“amt2”都是“amt”,而我的for循环变成:`for(I=1;I:(好眼力…我更改了文本区域的名称和id。确实,这会失败。但是其他人应该可以工作不?等只是我以相同的方式访问文本区域,然后解析内容。其他人应该可以工作,我同意。我看不到你发布的代码有其他问题。你可以发布服务器收到的数据吗是否有一种方法可以一次查看所有发布的数据?
for (i=1;i <= checkCount; i++){
    thisCheck = "checkNo"+i;
    thisCheck = Request.Form(thisCheck);
etc....