表单计算跳过上一个

时间:2015-05-04 10:41:44

标签: jquery forms

我正在编写一个计算脚本,它在FX的所有版本中都很完美,但在其他浏览器中,如果任何必填字段留空,则在提交后任何已填写的总值都会丢失。

在此form上,如果您在顶部附近选择会员身份,然后转到条目摘要并填写两个值,则总计为底部的权利和总计(上面"你是人类")正确计算。

如果您提交表单,则验证会启动,如果您填写其他值,则总计仅反映该值,而不是前两个仍然存在的值。

我很难过,因为它在FX中效果很好。我已经寻找了一周的某种理由,但这种跨浏览器的东西很棘手。感谢您的任何意见。

        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>

        <script>
        var jQ = $.noConflict(true);

        // version 7
        jQ( document ).ready(function() {

//***  Member calculations
jQ('input[name="Class1-3Total"]').prop('readonly', true);

jQ('select[name="member_status"]').on('click', function() {
      if(jQ(this).val() == "FULL MEMBER"){
       // jQ('#docContainer #item303').css("display","none");//this hides the member stable days
      // jQ('#docContainer item298').css("display","none");//this hides the breedshow_grandtotal
       }
   });

jQ('input[name="quantity_class1-3"]').on('keydown keyup', function() {
if(jQ.isNumeric(this.value)){
     var Class1_3Total = jQ(this).val() * 12;
  if(jQ('select[name="member_status"]').val() == "FULL MEMBER"){

        jQ('input[name="Class1-3Total"]').val(Class1_3Total);
        jQ('input[name="Class1-3Total"]').addClass( "sum" );


   }
   }else if(!jQ(this).val()){
            jQ('input[name="Class1-3Total"]').val("");
        jQ('input[name="Class1-3Total"]').removeClass( "sum" );

   }
   calc_total();
 });

 jQ('input[name="class4_total"]').prop('readonly', true);
jQ('input[name="quantity_class4"]').on('keydown keyup', function() {
if(jQ.isNumeric(this.value)){
       var class4_total = jQ(this).val() * 12;
  if(jQ('select[name="member_status"]').val() == "FULL MEMBER"){

        jQ('input[name="class4_total"]').val(class4_total);
        jQ('input[name="class4_total"]').addClass( "sum" );

   }
   }else if(!jQ(this).val()){
            jQ('input[name="class4_total"]').val("");
        jQ('input[name="class4_total"]').removeClass( "sum" );

   }
   calc_total();
});

    jQ('input[name="class19_total"]').prop('readonly', true);
    jQ('input[name="quantity_class19"]').on('keydown keyup', function() {
    if(jQ.isNumeric(this.value)){
       var class19_total = jQ(this).val() * 20;
  if(jQ('select[name="member_status"]').val() == "FULL MEMBER"){

        jQ('input[name="class19_total"]').val(class19_total);
        jQ('input[name="class19_total"]').addClass( "sum" );

   }
   }else if(!jQ(this).val()){
            jQ('input[name="class19_total"]').val("");
        jQ('input[name="class19_total"]').removeClass( "sum" );

   }
   calc_total();
});

       jQ('input[name="moorbennhall_total"]').prop('readonly', true);
        jQ('input[name="quantity_moorbennhall"]').on('keydown keyup', function() {
        if(jQ.isNumeric(this.value)){
       var moorbennhall_total = jQ(this).val() * 16;
  if(jQ('select[name="member_status"]').val() == "FULL MEMBER"){

        jQ('input[name="moorbennhall_total"]').val(moorbennhall_total);
        jQ('input[name="moorbennhall_total"]').addClass( "sum" );

   }
   }else if(!jQ(this).val()){
            jQ('input[name="moorbennhall_total"]').val("");
        jQ('input[name="moorbennhall_total"]').removeClass( "sum" );

   }
   calc_total();
});

       jQ('input[name="lakenview_total"]').prop('readonly', true);
        jQ('input[name="lakenview_quantity"]').on('keydown keyup', function() {
        if(jQ.isNumeric(this.value)){
       var lakenview_total = jQ(this).val() * 16;
  if(jQ('select[name="member_status"]').val() == "FULL MEMBER"){

        jQ('input[name="lakenview_total"]').val(lakenview_total);
        jQ('input[name="lakenview_total"]').addClass( "sum" );

   }
   }else if(!jQ(this).val()){
            jQ('input[name="lakenview_total"]').val("");
        jQ('input[name="lakenview_total"]').removeClass( "sum" );

   }
   calc_total();
});

       jQ('input[name="foalclasses_total"]').prop('readonly', true);
        jQ('input[name="quantity_foals"]').on('keydown keyup', function() {
        if(jQ.isNumeric(this.value)){
       var foalclasses_total = jQ(this).val() * 8;
  if(jQ('select[name="member_status"]').val() == "FULL MEMBER"){

        jQ('input[name="foalclasses_total"]').val(foalclasses_total);
        jQ('input[name="foalclasses_total"]').addClass( "sum" );

   }
   }else if(!jQ(this).val()){
            jQ('input[name="foalclasses_total"]').val("");
        jQ('input[name="foalclasses_total"]').removeClass( "sum" );

   }
   calc_total();
}); 

        jQ('input[name="total_allothers"]').prop('readonly', true);
        jQ('input[name="quantity_allothers"]').on('keydown keyup', function() {
        if(jQ.isNumeric(this.value)){
       var total_allothers = jQ(this).val() * 16;
  if(jQ('select[name="member_status"]').val() == "FULL MEMBER"){

        jQ('input[name="total_allothers"]').val(total_allothers);
        jQ('input[name="total_allothers"]').addClass( "sum" );

   }
   }else if(!jQ(this).val()){
            jQ('input[name="total_allothers"]').val("");
        jQ('input[name="total_allothers"]').removeClass( "sum" );

   }
   calc_total();
}); 

       jQ('input[name="firstaid_total"]').prop('readonly', true);
        jQ('input[name="firstaid_quantity"]').on('keydown keyup', function() {
        if(jQ.isNumeric(this.value)){
       var firstaid_total = jQ(this).val() * 5;
  if(jQ('select[name="member_status"]').val() == "FULL MEMBER"){

        jQ('input[name="firstaid_total"]').val(firstaid_total);
        jQ('input[name="firstaid_total"]').addClass( "sum" );

   }
   }else if(!jQ(this).val()){
            jQ('input[name="firstaid_total"]').val("");
        jQ('input[name="firstaid_total"]').removeClass( "sum" );

   }
   calc_total();
});
        jQ('input[name="catalogues_total"]').prop('readonly', true);
        jQ('input[name="quantity_catalogues"]').on('keydown keyup', function() {
        if(jQ.isNumeric(this.value)){
       var catalogues_total = jQ(this).val() * 4;
  if(jQ('select[name="member_status"]').val() == "FULL MEMBER"){

        jQ('input[name="catalogues_total"]').val(catalogues_total);
        jQ('input[name="catalogues_total"]').addClass( "sum" );

   }
   }else if(!jQ(this).val()){
            jQ('input[name="catalogues_total"]').val("");
        jQ('input[name="catalogues_total"]').removeClass( "sum" );

   }
   calc_total();
});

//*******  Stable cost for members
        jQ('input[name="stables_days_total"]').prop('readonly', true);
    jQ('input[name="stables_days_required[]"],select[name="stable_reqd"]').on('change', function() {
           if(jQ('select[name="member_status"]').val() == "FULL MEMBER"){

           var values = new Array();
         jQ.each(jQ('input[name="stables_days_required[]"]:checked'), function() {
           values.push(jQ(this).val());

              if(values.length == 1){
                 var stabledays = 50;
              }else if(values.length == 2){
                 var stabledays = 80;
              }else if(values.length == 3){
                 var stabledays = 100;
              }


                if(stabledays > 0){
                jQ('input[name="days_stable"]').val(stabledays);
                }else{jQ('input[name="days_stable"]').val("");}


          if(jQ('select[name="stable_reqd"]').val() != "Please choose" && jQ('select[name="stable_reqd"]').val() == "ONE"){ 
                 var stable_reqd = 1;
             }else if(jQ('select[name="stable_reqd"]').val() != "Please choose" && jQ('select[name="stable_reqd"]').val() == "TWO"){
                 var stable_reqd = 2;
             }
              jQ('input[name="stables_days_total"]').val((stabledays*stable_reqd));
              if((stabledays*stable_reqd) > 0){
              jQ('input[name="stables_days_total"]').addClass( "sum" );

            }else{ jQ('input[name="stables_days_total"]').removeClass( "sum" );}
        });
        }
        calc_total();
  });
  //*** End of member stable calculations

 jQ('input[name="hogroast_total"]').prop('readonly', true);
jQ('input[name="quantity_hogroast"]').on('keydown keyup', function() {
if(jQ.isNumeric(this.value)){
       var hogroast_total = jQ(this).val() * 16;
  if(jQ('select[name="member_status"]').val() == "FULL MEMBER"){

        jQ('input[name="hogroast_total"]').val(hogroast_total);
        jQ('input[name="hogroast_total"]').addClass( "sum" );

   }
   }else if(!jQ(this).val()){
            jQ('input[name="hogroast_total"]').val("");
        jQ('input[name="hogroast_total"]').removeClass( "sum" );

   }
   calc_total();
}); 

    jQ('input[name="electric_total"]').prop('readonly', true);
    jQ('input[name="quantity_hookup"]').on('keydown keyup', function() {
    if(jQ.isNumeric(this.value)){
       var electric_total = jQ(this).val() * 25;
  if(jQ('select[name="member_status"]').val() == "FULL MEMBER"){

        jQ('input[name="electric_total"]').val(electric_total);
        jQ('input[name="electric_total"]').addClass( "sum" );

   }
   }else if(!jQ(this).val()){
            jQ('input[name="electric_total"]').val("");
        jQ('input[name="electric_total"]').removeClass( "sum" );

   }
   calc_total();
});

jQ('input[name="voluntary_donation"]').on('keydown keyup', function() {
if(jQ.isNumeric(this.value)){

  if(jQ('select[name="member_status"]').val() == "FULL MEMBER"){
        jQ('input[name="voluntary_donation"]').addClass( "sum" );

   }
   }else if(!jQ(this).val()){
        jQ('input[name="voluntary_donation"]').removeClass( "sum" );

   }
   calc_total();
});
jQ('input[name="breed_totalamount"]').prop('readonly', true);
    function calc_total() {
      var sum_member = 0;
        jQ('.sum').each(function(){
        if(jQ.isNumeric(this.value)){
         sum_member += parseFloat(this.value);
          jQ('input[name="breed_totalamount"]').val(sum_member);
          jQ('input[name="breedshow_grandtotal"]').val(sum_member);
          }


        });
        if(!sum_member){

           jQ('input[name="breed_totalamount"]').val("");
          jQ('input[name="breedshow_grandtotal"]').val("");
          }
    }

    // ******* end of member calculations

  //*** Non-member calculations


    jQ('select[name="member_status"]').on('click', function() {
      if(jQ(this).val() == "Associate member/Non-member"){
        //jQ('#docContainer #item332').css("display","none");//this hides the non-member stable days
       // jQ('#docContainer item298').css("display","none");//this hides the breedshow_grandtotal
       }
   });
   jQ('input[name="Class1-3_none_T"]').prop('readonly', true);
jQ('input[name="quantity_class1-3_none"]').on('keydown keyup', function() {
if(jQ.isNumeric(this.value)){
     var Class1_3_none_T = jQ(this).val() * 17;
  if(jQ('select[name="member_status"]').val() == "Associate member/Non-member"){

        jQ('input[name="Class1-3_none_T"]').val(Class1_3_none_T);
        jQ('input[name="Class1-3_none_T"]').addClass( "sum" );

   }
   }else if(!jQ(this).val()){
        jQ('input[name="Class1-3_none_T"]').val("");
        jQ('input[name="Class1-3_none_T"]').removeClass( "sum" );

   }
   calc_non_member_total();
 });

 jQ('input[name="Class4-4_none_T"]').prop('readonly', true);
jQ('input[name="quantity_class4_none"]').on('keydown keyup', function() {
if(jQ.isNumeric(this.value)){
       var Class4_4_none_T = jQ(this).val() * 17;
  if(jQ('select[name="member_status"]').val() == "Associate member/Non-member"){

        jQ('input[name="Class4-4_none_T"]').val(Class4_4_none_T);
        jQ('input[name="Class4-4_none_T"]').addClass( "sum" );

   }
   }else if(!jQ(this).val()){
        jQ('input[name="Class4-4_none_T"]').val("");
        jQ('input[name="Class4-4_none_T"]').removeClass( "sum" );

   }
   calc_non_member_total();
});

     jQ('input[name="class19_none_T"]').prop('readonly', true);
    jQ('input[name="quantity_class19_none"]').on('keydown keyup', function() {
    if(jQ.isNumeric(this.value)){
       var class19_none_T = jQ(this).val() * 35;
  if(jQ('select[name="member_status"]').val() == "Associate member/Non-member"){

        jQ('input[name="class19_none_T"]').val(class19_none_T);
        jQ('input[name="class19_none_T"]').addClass( "sum" );

   }
   }else if(!jQ(this).val()){
        jQ('input[name="class19_none_T"]').val("");
        jQ('input[name="class19_none_T"]').removeClass( "sum" );

   }
   calc_non_member_total();
});


         jQ('input[name="lakenview_none_t"]').prop('readonly', true);
        jQ('input[name="lakenview_quantity_none"]').on('keydown keyup', function() {
        if(jQ.isNumeric(this.value)){
       var lakenview_none_t = jQ(this).val() * 24;
  if(jQ('select[name="member_status"]').val() == "Associate member/Non-member"){

        jQ('input[name="lakenview_none_t"]').val(lakenview_none_t);
        jQ('input[name="lakenview_none_t"]').addClass( "sum" );

   }
   }else if(!jQ(this).val()){
        jQ('input[name="lakenview_none_t"]').val("");
        jQ('input[name="lakenview_none_t"]').removeClass( "sum" );

   }
   calc_non_member_total();
});

       jQ('input[name="foalclasses_none_t"]').prop('readonly', true);
        jQ('input[name="quantity_foals_none"]').on('keydown keyup', function() {
        if(jQ.isNumeric(this.value)){
       var foalclasses_none_t = jQ(this).val() * 12;
  if(jQ('select[name="member_status"]').val() == "Associate member/Non-member"){

        jQ('input[name="foalclasses_none_t"]').val(foalclasses_none_t);
        jQ('input[name="foalclasses_none_t"]').addClass( "sum" );

   }
   }else if(!jQ(this).val()){
        jQ('input[name="foalclasses_none_t"]').val("");
        jQ('input[name="foalclasses_none_t"]').removeClass( "sum" );

   }
   calc_non_member_total();
}); 

       jQ('input[name="allothers_none_t"]').prop('readonly', true);
        jQ('input[name="quantity_allothers_none"]').on('keydown keyup', function() {
        if(jQ.isNumeric(this.value)){
       var allothers_none_t = jQ(this).val() * 24;
  if(jQ('select[name="member_status"]').val() == "Associate member/Non-member"){

        jQ('input[name="allothers_none_t"]').val(allothers_none_t);
        jQ('input[name="allothers_none_t"]').addClass( "sum" );

   }
   }else if(!jQ(this).val()){
        jQ('input[name="allothers_none_t"]').val("");
        jQ('input[name="allothers_none_t"]').removeClass( "sum" );

   }
   calc_non_member_total();
}); 

       jQ('input[name="firstaid_none_t"]').prop('readonly', true);
        jQ('input[name="firstaid_quantity_none"]').on('keydown keyup', function() {
        if(jQ.isNumeric(this.value)){
       var firstaid_none_t = jQ(this).val() * 5;
  if(jQ('select[name="member_status"]').val() == "Associate member/Non-member"){

        jQ('input[name="firstaid_none_t"]').val(firstaid_none_t);
        jQ('input[name="firstaid_none_t"]').addClass( "sum" );

   }
   }else if(!jQ(this).val()){
        jQ('input[name="firstaid_none_t"]').val("");
        jQ('input[name="firstaid_none_t"]').removeClass( "sum" );

   }
   calc_non_member_total();
});

        jQ('input[name="catalogues_total_none"]').prop('readonly', true);
        jQ('input[name="quantity_catalogues_none"]').on('keydown keyup', function() {
        if(jQ.isNumeric(this.value)){
       var catalogues_total_none = jQ(this).val() * 4;
  if(jQ('select[name="member_status"]').val() == "Associate member/Non-member"){

        jQ('input[name="catalogues_total_none"]').val(catalogues_total_none);
        jQ('input[name="catalogues_total_none"]').addClass( "sum" );

   }
   }else if(!jQ(this).val()){
        jQ('input[name="catalogues_total_none"]').val("");
        jQ('input[name="catalogues_total_none"]').removeClass( "sum" );

   }
   calc_non_member_total();
});

//*******  Stable cost for non members
        jQ('input[name="stables_days_none_t"]').prop('readonly', true);
    jQ('input[name="stables_days_required_none[]"],select[name="stable_reqd_none"]').on('change', function() {
           if(jQ('select[name="member_status"]').val() == "Associate member/Non-member"){

           var values = new Array();
         jQ.each(jQ('input[name="stables_days_required_none[]"]:checked'), function() {
           values.push(jQ(this).val());

              if(values.length == 0){
                 var stabledays = "";
              }else if(values.length == 1){
                 var stabledays = 70;
              }else if(values.length == 2){
                 var stabledays = 100;
              }else if(values.length == 3){
                 var stabledays = 120;
              }


                if(stabledays > 0){
                jQ('input[name="days_stable_none"]').val(stabledays);
                }else{jQ('input[name="days_stable_none"]').val("");}


          if(jQ('select[name="stable_reqd_none"]').val() != "Please choose" && jQ('select[name="stable_reqd_none"]').val() == "ONE"){ 
                 var stable_reqd = 1;
             }else if(jQ('select[name="stable_reqd_none"]').val() != "Please choose" && jQ('select[name="stable_reqd_none"]').val() == "TWO"){
                 var stable_reqd = 2;
             }
              jQ('input[name="stables_days_none_t"]').val((stabledays*stable_reqd));
              if((stabledays*stable_reqd) > 0){
              jQ('input[name="stables_days_none_t"]').addClass( "sum" );

            }else{ jQ('input[name="stables_days_none_t"]').removeClass( "sum" );}
        });
        }
        calc_non_member_total();

  });

//*** End of non_member stable calculations

jQ('input[name="hogroast_none_t"]').prop('readonly', true);
jQ('input[name="quantity_hogroast_none"]').on('keydown keyup', function() {
if(jQ.isNumeric(this.value)){
       var hogroast_none_t = jQ(this).val() * 16;
  if(jQ('select[name="member_status"]').val() == "Associate member/Non-member"){

        jQ('input[name="hogroast_none_t"]').val(hogroast_none_t);
        jQ('input[name="hogroast_none_t"]').addClass( "sum" );

   }
   }else if(!jQ(this).val()){
        jQ('input[name="hogroast_none_t"]').val("");
        jQ('input[name="hogroast_none_t"]').removeClass( "sum" );

   }
   calc_non_member_total();
});     


    jQ('input[name="quantity_hookup"]').on('keydown keyup', function() {
    if(jQ.isNumeric(this.value)){
       var electric_total = jQ(this).val() * 25;
  if(jQ('select[name="member_status"]').val() == "Associate member/Non-member"){

        jQ('input[name="electric_total"]').val(electric_total);
        jQ('input[name="electric_total"]').addClass( "sum" );


   }
   }else if(!jQ(this).val()){
        jQ('input[name="electric_total"]').val("");
        jQ('input[name="electric_total"]').removeClass( "sum" );

   }
   calc_non_member_total();
});

jQ('input[name="voluntary_donation"]').on('keydown keyup', function() {
if(jQ.isNumeric(this.value)){

  if(jQ('select[name="member_status"]').val() == "Associate member/Non-member"){
        jQ('input[name="voluntary_donation"]').addClass( "sum" );

   }
   }else if(!jQ(this).val()){
        jQ('input[name="voluntary_donation"]').removeClass( "sum" );

   }
   calc_non_member_total();
});

    function calc_non_member_total() {
      var sum_non_member = 0;
        jQ('.sum').each(function(){
        if(jQ.isNumeric(this.value)){
         sum_non_member += parseFloat(this.value);
          jQ('input[name="breed_totalamount"]').val(sum_non_member);
          jQ('input[name="breedshow_grandtotal"]').val(sum_non_member);
          }
        });
        if(!sum_non_member){

           jQ('input[name="breed_totalamount"]').val("");
          jQ('input[name="breedshow_grandtotal"]').val("");
          }
    }



});</script>

1 个答案:

答案 0 :(得分:0)

我在完成更多测试并发现其他来源提供的验证脚本是绊倒Chrome的最终问题之后,最终让所有浏览器都能使用上述脚本。我们对此进行了一些调整,以减少它向一个显示的错误数量,并改变我的计算脚本在页面头部相对于其他提供的脚本的位置。对于其他具有浏览器兼容性问题的人来说,不断挖掘和尝试不同的事情来消除和确定问题的来源。