gpt4 book ai didi

javascript - Jquery函数循环添加值

转载 作者:行者123 更新时间:2023-12-03 09:42:21 24 4
gpt4 key购买 nike

我试图从表单字段数组中获取总值,但由于某种原因,Keyup 上的值不正确,最终值是从最后输入的值中添加的,并且此处并非所有字段都是我的函数:

function percentage_hardcoded_form(_formharcoded_id, _form_fieldArray, _form_hardcodedtotalWrapper, _form_hardcodedtotalId) {

var _form = $j(_formharcoded_id);
var _sumDisplay = _form.find(_form_hardcodedtotalId);

$j(_form_hardcodedtotalId).attr('disabled','disabled');


$j.each(_form_fieldArray, function(index, item) {

var _summands = item;
var sum = 0;

_form.delegate(_summands, 'change', function () {

//$j.each(function () {
var value = Number($j(this).val());
if (!isNaN(value) && !$j(this).is(_form_hardcodedtotalId)) sum += value;
//});

if(sum === 100)
{
// is 100
$j(_form_hardcodedtotalWrapper).removeClass('warning');
$j(_form_hardcodedtotalWrapper).find('.QuestionWarning').hide();
}
else
{
// isnt 100
$j(_form_hardcodedtotalWrapper).addClass('warning');
$j(_form_hardcodedtotalWrapper).find('.QuestionWarning').show();
}

_sumDisplay.val(sum);

});
});
}

percentage_hardcoded_form('#aspnetForm #questions_page_Page17', designForm_ids_1, "#question_DCWorkSplit", "#DCWorkSplit");

这是我正在使用的jsfiddle: http://jsfiddle.net/q05k48b7/1/

更新

我已经更新了 JS fiddle,请参阅下面的链接,但仍然无法正常工作。

http://jsfiddle.net/q05k48b7/2/

最佳答案

通过为您拥有的每种不同表单引入 Form 类型对象来简化代码怎么样?

var formObj = function($){
var fields = [];
var total = 0;
var totalField = null;

return {
setFields: function(fieldIds){
fields = fieldIds;
},
setTotalField: function(fieldId){
totalField = fieldId
},
setTotal: function(){
var total = 0;
$.each(fields, function(idx,item){
var v = $('#'+item).val();
if(!isNaN(v)){
var nV = Number(v);
total += nV;
}
});
$('#'+totalField).val(total);
};
};
};

然后你可以像这样使用它:

var form1 = new formObj($j);
form1.setFields([
'TurnoverFromOwnDesign',
'Feesinrespectofdesignonly',
'TurnoverFromSubcontractedWork',
'TurnoverFromSupervisedWork',
'TurnoverDesignsByClient',
'DCAllotherturnover'
]);
form1.setTotalField('DCWorkSplit');
form1.setTotal();

问题不太清楚 - MVCE会有帮助,但我认为this fiddle演示了上述模式正在执行您想要执行的操作。

请注意, fiddle 在输入 change 处理程序上为每个 formObj 调用 setTotal 方法:

$j('#questions_page_Page17 input').change(function(){
form1.setTotal();
form2.setTotal();
});

关于javascript - Jquery函数循环添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31147725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com