2015-09-18 79 views
1

所以我試圖用我的表單中複選框的值做一個位域。但是,無論何時刷新頁面或提交驗證失敗,都不會將值清零,而是將其變爲列表。刷新不爲零值,將其轉換爲值列表

var priceSum = 0; 
$('.price:checked').each(function() { 
    priceSum += parseInt(this.value); 
}); 

這裏面$('#form').submit(function() {})

如果沒有驗證錯誤或刷新,我得到正確的值。但是,如果這些事件確實發生,它會將該值變成一個列表。例如,假設驗證失敗兩次才成功,而不是4,我會得到0,0,4

在進一步的審查,我敢肯定它有一些與我如何將它附加到表格 var prices = $('<input>').attr("type", "hidden").attr("name", "priceSum").val(priceSum); $('#form').append($(prices));

那會不會每次都附加值?如果是這樣,是否有辦法刪除已存在的隱藏字段?

感謝

+1

我沒有看到任何可能與此代碼發生的方式。你能顯示整個代碼嗎? – Barmar

+0

你有一個HTML ID priceSum? – Joe

+0

不,這只是我創建的一個變量,用於計算在'.submit(function(){})'中聲明的位域值,這就是爲什麼我創建隱藏的輸入標記並將其附加到窗體的原因。至少我認爲這就是我正在做的事情 – errorline1

回答

1

如果你不能很容易地避免每次創建隱藏的輸入,你可以,如果它存在先刪除它:

$('#form [name=priceSum]').remove(); 

您可以安全地做到這一點,即使輸入不存在。然後它只會找到零個元素,並且remove調用將不會執行任何操作。

0

但願只是不停追加值每次?

是。如果不存在,只能附加priceSum輸入。