UPDATE: 我使用第一個評論者的checkNo []建議修改了代碼,因爲我認爲它可能有幫助,而且它更優雅。由jQuery創建的表單字段在提交時返回「undefined」
表格的初始硬編碼字段組看起來幾乎相同,除了我刪除了例如「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);
}
結果?它仍然出現未定義...好像jQuery生成的字段不存在..但他們是。我看到他們,我填寫了他們,我看到他們在HTML ...他們在那裏,但是當我張貼表格,就像他們消失。
vvvvvvvvvvv PRE-UPDATE vvvvvvvvvvvvvvv
我有一個看起來像這樣我的形式(其中用戶可以添加檢查)的一部分:
<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">
我有jQuery的添加新字段是這樣的:
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 <= checkCount; i++){
thisCheck = "checkNo"+i;
thisCheck = Request.Form(thisCheck);
etc....
並驗證它正在請求正確的表單字段名稱。
'$(collection).size()'已被棄用,不應再使用。使用'$(collection).length'來代替(注意缺少括號 - 它是一個屬性,所以沒有函數調用的開銷)。 –
什麼是Request?服務器端或客戶端對象?你爲什麼不使用'checkNo []'名字? – undefined
'請求'是服務器端..表單發佈到它所在的同一頁面,並且請求值的JS在任何HTML –