2011-11-19 41 views
0

我正在使用一個腳本,將字段集添加到我的表單中,但我遇到了一個我無法弄清楚的小故障,並且非常感謝您提供的任何洞察。

這是麻煩:
現場組的重複效果很好。Javascript動態Fieldset和總和

我有另一個腳本是在原始字段集中創建名爲「unitPrice」的字段的總和。當我使用新的unitPrice字段添加新的字段集時,不會計算出總和。我確定它們正在重新命名,但是我將使用什麼名稱,以及如何將它寫入計算中,以便我總共包含所有unitPrice字段?

感謝您的幫助。

這裏是字段集的腳本:

<script> 

function insertAfter(newElement, targetElement) 

{ 
var parent = targetElement.parentNode; 
if (parent.lastChild == targetElement) 
{ 
    parent.appendChild(newElement); 
} 
else 
{ 
    parent.insertBefore(newElement, targetElement.nextSibling); 
} 
} 


// Suffix + Counter 
var suffix = ':'; 
var counter = 1; 


// Clone nearest parent fieldset 
function cloneMe(a) 
{ 
// Increment counter 
counter++; 

// Find nearest parent fieldset 
var original = a.parentNode; 
while (original.nodeName.toLowerCase() != 'fieldset') 
{ 
    original = original.parentNode; 
} 
var duplicate = original.cloneNode(true); 

// Label - For and ID 
var newLabel = duplicate.getElementsByTagName('label'); 
for (var i = 0; i < newLabel.length; i++) 
{ 
    var labelFor = newLabel[i].htmlFor 
    if (labelFor) 
    { 
     oldFor = labelFor.indexOf(suffix) == -1 ? labelFor : labelFor.substring(0, labelFor.indexOf(suffix)); 
     newLabel[i].htmlFor = oldFor + suffix + counter; 
    } 
    var labelId = newLabel[i].id 
    if (labelId) 
    { 
     oldId = labelId.indexOf(suffix) == -1 ? labelId : labelId.substring(0, labelId.indexOf(suffix)); 
     newLabel[i].id = oldId + suffix + counter; 
    } 
} 

// Input - Name + ID 
var newInput = duplicate.getElementsByTagName('input'); 
for (var i = 0; i < newInput.length; i++) 
{ 
    var inputName = newInput[i].name 
    if (inputName) 
    { 
     oldName = inputName.indexOf(suffix) == -1 ? inputName : inputName.substring(0, inputName.indexOf(suffix)); 
     newInput[i].name = oldName + suffix + counter; 
    } 
    var inputId = newInput[i].id 
    if (inputId) 
    { 
     oldId = inputId.indexOf(suffix) == -1 ? inputId : inputId.substring(0, inputId.indexOf(suffix)); 
     newInput[i].id = oldId + suffix + counter; 
    } 
} 

// Select - Name + ID 
var newSelect = duplicate.getElementsByTagName('select'); 
for (var i = 0; i < newSelect.length; i++) 
{ 
    var selectName = newSelect[i].name 
    if (selectName) 
    { 
     oldName = selectName.indexOf(suffix) == -1 ? selectName : selectName.substring(0, selectName.indexOf(suffix)); 
     newSelect[i].name = oldName + suffix + counter; 
    } 
    var selectId = newSelect[i].id 
    if (selectId) 
    { 
     oldId = selectId.indexOf(suffix) == -1 ? selectId : selectId.substring(0, selectId.indexOf(suffix)); 
     newSelect[i].id = oldId + suffix + counter; 
    } 
} 

// Textarea - Name + ID 
var newTextarea = duplicate.getElementsByTagName('textarea'); 
for (var i = 0; i < newTextarea.length; i++) 
{ 
    var textareaName = newTextarea[i].name 
    if (textareaName) 
    { 
     oldName = textareaName.indexOf(suffix) == -1 ? textareaName : textareaName.substring(0, textareaName.indexOf(suffix)); 
     newTextarea[i].name = oldName + suffix + counter; 
    } 
    var textareaId = newTextarea[i].id 
    if (textareaId) 
    { 
     oldId = textareaId.indexOf(suffix) == -1 ? textareaId : textareaId.substring(0, textareaId.indexOf(suffix)); 
     newTextarea[i].id = oldId + suffix + counter; 
    } 
} 

duplicate.className = 'duplicate'; 
insertAfter(duplicate, original); 
} 


// Delete nearest parent fieldset 
function deleteMe(a) 
{ 
var duplicate = a.parentNode; 
while (duplicate.nodeName.toLowerCase() != 'fieldset') 
{ 
    duplicate = duplicate.parentNode; 
} 
duplicate.parentNode.removeChild(duplicate); 
} 
</script> 

這裏是我使用的計算腳本:我想,你需要調用「myfunction的」每次

<script type="text/javascript"> 
function myFunction(){ 
var the_fields = document.getElementsByName("unitPrice"); 
var the_sum = 0; 
for (var i=0; i<the_fields.length; i++){ 
    if (the_fields[i].value != "" 
    && !isNaN(the_fields[i].value)) 
    { 
     the_sum += Number(the_fields[i].value); 
    } 
} 
document.repairform.sum.value = (the_sum.toFixed(2)); 

} 
</script> 

回答

0

一個新的領域正在增加。 當有人加載你的頁面時,「myfunction」會計算當前「現有」字段的總和。當您複製字段時,您需要重新調用「myfunction」,以便根據新的重複字段更新總和。