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