Javascript 如何使用jQuery来添加分区表单字段,并在添加不同值时进行更新?

Javascript 如何使用jQuery来添加分区表单字段,并在添加不同值时进行更新?,javascript,jquery,html,forms,validation,Javascript,Jquery,Html,Forms,Validation,在我的表格中,我对表格字段进行了分区(第1节、第2节等)。对于每个表格字段,我将值相加,并在每个部分的最后一个字段中显示总数,但是如果用户输入5,然后将其删除并输入0,5仍然添加到最终分数中,我不确定如何允许对值进行更改,以便它们摆脱旧值 目前的做法是: User adds value 5; 5 += final section field total; User removes 5, instead puts 0; final section field total = 5; 下面是我正在使

在我的表格中,我对表格字段进行了分区(第1节、第2节等)。对于每个表格字段,我将值相加,并在每个部分的最后一个字段中显示总数,但是如果用户输入5,然后将其删除并输入0,5仍然添加到最终分数中,我不确定如何允许对值进行更改,以便它们摆脱旧值

目前的做法是:

User adds value 5;
5 += final section field total;
User removes 5, instead puts 0;
final section field total = 5;
下面是我正在使用的代码

var form_inputs = document.getElementsByTagName("input");

$.each(form_inputs, function(i){
    if($(form_inputs[i]).attr("type") == "hidden"){ return false; }
        $(form_inputs[i]).attr("type", "number");
        $(form_inputs[i]).attr("required", "true");
        $(form_inputs[i]).change(function(){
            if(i === 0 || i < 6){

                if(check_valid_pt($(this).uniqueId(), $(this).val())){
                    addValues(attempt, parseInt($(this).val()), i);
                } else {
                    alert("Please only enter 0, 4 or 5");
                    $(this).val("");
                }

            } else if(i > 20 && i < 39){

                if(check_valid_sr($(this).uniqueId(), $(this).val())){
                    addValues(attempt, parseInt($(this).val()), i);
                } else {
                    alert("Please only enter 0 or 5");
                    $(this).val("");
                }

            } else if(i > 59 && i < 78){

                if(check_valid_wfr($(this).uniqueId(), $(this).val(), "")){
                    addValues(attempt, parseInt($(this).val()), i);
                } else {
                    alert("Please only enter 0 or 5");
                    $(this).val("");
                }

            } else if(i > 77 && i < 108){

                if(check_valid_wfr($(this).uniqueId(), "", $(this).val())){
                    addValues(attempt, parseInt($(this).val()), i);
                } else {
                    alert("Please only enter 0, 3 or 5");
                    $(this).val("");
                }

            } else if(i > 128 && i < 159){

                if(check_valid_er($(this).uniqueId(), $(this).val())){
                    addValues(attempt, parseInt($(this).val()), i);
                } else {
                    alert("Please only enter 0, 3 or 5");
                    $(this).val("");
                }

            }
        });
});
var form_inputs=document.getElementsByTagName(“输入”);
$。每个(表格输入,功能(i){
if($(form_inputs[i]).attr(“type”)==“hidden”){return false;}
$(表格输入[i]).attr(“类型”、“编号”);
$(表格输入[i]).attr(“必需”、“真实”);
$(表格输入[i])。更改(函数(){
如果(i==0 | | i<6){
如果(请检查有效的值($(this.uniqueId(),$(this.val())){
addValues(尝试,parseInt($(this.val()),i);
}否则{
警报(“请仅输入0、4或5”);
$(此).val(“”);
}
}否则如果(i>20&&i<39){
如果(检查有效的\u sr($(this.uniqueId(),$(this.val())){
addValues(尝试,parseInt($(this.val()),i);
}否则{
警报(“请仅输入0或5”);
$(此).val(“”);
}
}否则如果(i>59&&i<78){
如果(检查有效的wfr($(this.uniqueId(),$(this.val(),“”)){
addValues(尝试,parseInt($(this.val()),i);
}否则{
警报(“请仅输入0或5”);
$(此).val(“”);
}
}否则如果(i>77&&i<108){
如果(检查有效的wfr($(this.uniqueId(),“”,$(this.val())){
addValues(尝试,parseInt($(this.val()),i);
}否则{
警报(“请仅输入0、3或5”);
$(此).val(“”);
}
}否则如果(i>128&&i<159){
如果(检查有效值($(this.uniqueId(),$(this.val())){
addValues(尝试,parseInt($(this.val()),i);
}否则{
警报(“请仅输入0、3或5”);
$(此).val(“”);
}
}
});
});

我相信您正在寻找以下内容:

$('.addMe').change(函数(){
$('.addMe').removeClass('hasError');
var-ttl=0;
$('.addMe')。每个(函数(i,e){
ttl=数字($(e).val())+ttl;
var validVals=$(this).data('valid-vals').split(',');
如果(validVals.length>0&&&$(this.val()!=''&&$.inArray($(this.val(),validVals)==-1){
$(this.addClass('hasError');
$(this.val)(validVals.join(',')+'only');
}
});
$('#cost').html($('.hasError').length>0?'':ttl);
});
$('.addMe').focus(函数(){
if($(this).val().match(/only/i)){
$(this.val(“”);
$(this.removeClass('hasError');
}
});
.addMe{
边缘底部:15px;
}
哈斯洛尔先生{
边框样式:实心;
边框宽度:1px;
边框颜色:红色;
背景色:#FFCCCC;
}



只有-0,4,5
只有-0,5
只有-0,5
只有-0,3,5
只有-0,3,5

如果我们能看到
检查有效的\u sr(()
检查有效的\u wfr()
检查有效的\u pt()
检查有效的\u er()
,可能有更好的方法来完成所有这些函数正在执行的操作……虽然我下面的答案确实解决了问题,但我想,您最好创建选择框,而不是输入。只是想一想