您的代碼有幾個問題,除了編號:
功能具有一個從未使用過form
參數。
document.getElementById()
返回單個DOM元素或null。你的P
變量是一個jQuery對象,如果你選擇的是id,它應該只包含一個元素或者不包含任何元素 - 假設你試圖使用P
和一個索引,你似乎認爲它可能有多個匹配元素,但只有當你有多個元素具有相同的id,這是無效的html(這會導致不可靠的結果 - 所以如果是這樣,你應該修復它:你可以使用相同的名稱,但不是相同的ID)。
無論哪種方式,嘗試使用P作爲由.getElementById()
返回的DOM元素的屬性沒有任何意義。所以到處都是你說的document.getElementById('').P.something
是錯的。
就產生了隱藏的輸入獨特的編號,你只需要循環計數一個變量,i
,然後輸入計數第二(新)變量,我們稱之爲n
。僅在if checked
聲明中增加n
。或者,如果你使用jQuery循環,你不需要i
,只需n
。如果你顯示你的HTML,我可以正確地更新它,而不是猜測,但是像這樣:
function updateCart(form) {
// first remove any hidden inputs from a previous unsuccessful submit
// (this may be optional depending on whether you're submitting with ajax
// and/or potentially aborting the submit for other reasons, e.g., if you're
// submitting with ajax and the web server might return an error you need to
// remove the previous hiddens if the user tries again)
$('#cart_items input[type="hidden"]').remove();
// now process each checkbox and add numbered elements for each checked one
var n = 0,
$f = $("#cart_items");
// you may need to vary the selector here because
// I don't know the names of your elements
$('input[type="checkbox"]').each(function() {
if (this.checked) {
// following is a tidied up version of your input creation code,
// which assumes that the value attribute of the checkbox holds
// the item name and price information.
n++;
$f.append('<input type="hidden" name="item_name' + n +
'" value="' + this.value.substring(6) + '">');
$f.append('<input type="hidden" name="amount_' + n +
'" value="' + this.value.substring(0,5) + '">');
}
});
if (n === 0) {
// no hiddens were added
alert("Please select products");
return false;
} else {
// success, inputs added above
return true; // or submit or whatever
}
}
這行上缺少單引號:'cart + =' nnnnnn 2011-12-31 03:27:43
你可以在jsFiddle中設置它嗎?嘗試http://jsfiddle.net/skram/SdEWF/1/ – 2011-12-31 03:31:42
這絕對是一個錯字。在代碼中,它看起來是我更新它的外觀。 – user1114852 2011-12-31 03:38:19