我试图从表单字段数组中获取总值,但由于某种原因,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,请参阅下面的链接,但仍然无法正常工作。
最佳答案
通过为您拥有的每种不同表单引入 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/