2016-08-10 2 views
0
.

. Я пытаюсь добавить налог, если этот флажок установлен или не добавлен, если он также не установлен, если флажок установлен, чтобы добавить налог и наоборот, чтобы снять налог, если он не установлен. Мой код ниже, но я получаю сообщение об ошибке updatetotal не является функцией. из того, что я прочитал, это должно работать, но это не так. игнорируйте $j это настраивает для JQuery конфликтов на базеЕсли флажок установлен, сделайте это, сделайте это. Не работает.

$j(function() { 

     $j(document).on('keyup', '#addit_fee_cost_net', function() { 
      updateTotal(); 
     }); 
     var updateTotal = function() { 
      addit_fees = parseFloat($j('#addit_fee_cost_net').val()); 

     var output_total = $j('#addit_fee_cost_gross'); 

     var total = addit_fees; 
      if(isNaN(total)){ 
      total=0.00; 
      } 
     output_total.val(total.toFixed(2)); 
     };   

     $j(document).on('change','#addit_taxable_flag', function() { 
    if($j(this).is(":checked")) {   
      updateTotal(); 

     var updateTotal = function() { 
      addit_fees = parseFloat($j('#addit_fee_cost_net').val()); 

     var output_total_inc_vat = $j('#addit_fee_cost_gross'); 

     var tax = parseFloat($j('#tax_id').val()); 

     var total_inc_vat = addit_fees * (tax + 1); 
      if(isNaN(total_inc_vat)){ 
      total_inc_vat=0.00; 
      } 
     output_total_inc_vat.val(total_inc_vat.toFixed(2)); 
     }; 
    } else { 
      updateTotal(); 
        var updateTotal = function() { 
      addit_fees = parseFloat($j('#addit_fee_cost_net').val()); 

     var output_total = $j('#addit_fee_cost_gross'); 

     var total = addit_fees; 
      if(isNaN(total)){ 
      total=0.00; 
      } 
     output_total.val(total.toFixed(2)); 
     }; 
    } 
    }); 
}); 

Я просто добавил ниже ответы, так я теперь не получаю undifined ошибки, но если проверено разве работает так ничего не меняет на изменениях.

$ J (функция() {

 $j(document).on('keyup', '#addit_fee_cost_net', function() { 
      updateTotal(); 
     }); 
     var updateTotal = function() { 
      addit_fees = parseFloat($j('#addit_fee_cost_net').val()); 

     var output_total = $j('#addit_fee_cost_gross'); 

     var total = addit_fees; 
      if(isNaN(total)){ 
      total=0.00; 
      } 
     output_total.val(total.toFixed(2)); 
     };   

     $j(document).on('change','#addit_taxable_flag', function() { 
    if($j(this).is(":checked")) { 

     var updateTotal = function() { 

      updateTotal(); 

      addit_fees = parseFloat($j('#addit_fee_cost_net').val()); 

     var output_total_inc_vat = $j('#addit_fee_cost_gross'); 

     var tax = parseFloat($j('#tax_id').val()); 

     var total_inc_vat = addit_fees * (tax + 1); 
      if(isNaN(total_inc_vat)){ 
      total_inc_vat=0.00; 
      } 
     output_total_inc_vat.val(total_inc_vat.toFixed(2)); 
     }; 
    } else { 
     var updateTotal = function() { 

      updateTotal(); 

      addit_fees = parseFloat($j('#addit_fee_cost_net').val()); 

     var output_total = $j('#addit_fee_cost_gross'); 

     var total = addit_fees; 
      if(isNaN(total)){ 
      total=0.00; 
      } 
     output_total.val(total.toFixed(2)); 
     }; 
    } 
    }); 
}); 

Любая помощь будет высоко оценена как независимо от того, как я пытаюсь форматировать это я не могу заставить его работать я только попробовал ниже формат, но ничего не пожары. Большое спасибо заранее

function updateTotal1(checked){ 
     if(checked == true){ 

     var updateTotal1 = function() { 

      updateTotal1(); 

      addit_fees = parseFloat($j('#addit_fee_cost_net').val()); 

     var output_total_inc_vat = $j('#addit_fee_cost_gross'); 

     var tax = parseFloat($j('#tax_id').val()); 

     var total_inc_vat = addit_fees * (tax + 1); 
      if(isNaN(total_inc_vat)){ 
      total_inc_vat=0.00; 
      } 
     output_total_inc_vat.val(total_inc_vat.toFixed(2)); 
     }; 
    } else { 

     var updateTotal1 = function() { 

      updateTotal1(); 

      addit_fees = parseFloat($j('#addit_fee_cost_net').val()); 

     var output_total = $j('#addit_fee_cost_gross'); 

     var total = addit_fees; 
      if(isNaN(total)){ 
      total=0.00; 
      } 
     output_total.val(total.toFixed(2)); 
    }; 
    }; 
    }; 
}); 

    $j('#addit_taxable_flag').on('change', function(){ 
     updateTotal($j(this).is(':checked')); 
    }); 
+1

определяет соответствующую функцию functionTotal() 'вне кода обработчика события. Или просто избегайте использования какой-либо другой вспомогательной функции и сами пишете логику расчета. – vijayP

+0

Вы указали 'updateTotal()'? + какое значение хранится в updateTotal var? функция не возвращает anythng –

+0

Я разместил полный код выше, а не только ту часть, с которой у меня возникли проблемы. насколько я вижу, общее количество обновлений было определено вне обработчика – troggy69

ответ

1

После большой борьбы и какой-либо внешней помощи мне удалось решить эту проблему. Большое спасибо за вашу помощь. извинения здесь - это код.

$j(function() { 

     $j(document).on('keyup', '#addit_fee_cost_net', function() { 
      updateTotal(); 
     }); 
     var updateTotal = function() { 
      addit_fees = parseFloat($j('#addit_fee_cost_net').val()); 

     var output_total = $j('#addit_fee_cost_gross'); 
     var tax = parseFloat($j('#tax_id').val()); 

     var total = addit_fees; 
      if(isNaN(total)){ 
      total=0.00; 
      } 
      if($j('#addit_taxable_flag').is(":checked")) { 
     var total = addit_fees * (tax + 1); 
      } 
     output_total.val(total.toFixed(2)); 
     };   

     $j(document).on('change','#addit_taxable_flag', function() { 
      if($j(this).is(":checked")) { 
        updateTotal2(); 
      } else { 
        updateTotal3(); 
      } 
     }); 

    var updateTotal2 = function() { 
     addit_fees = parseFloat($j('#addit_fee_cost_net').val()); 

     var output_total_inc_vat = $j('#addit_fee_cost_gross'); 

     var tax = parseFloat($j('#tax_id').val()); 

     var total_inc_vat = addit_fees * (tax + 1); 
     if(isNaN(total_inc_vat)){ 
      total_inc_vat=0.00; 
     } 
     output_total_inc_vat.val(total_inc_vat.toFixed(2)); 
    }; 
    var updateTotal3 = function() { 
     addit_fees = parseFloat($j('#addit_fee_cost_net').val()); 

     var output_total = $j('#addit_fee_cost_gross'); 

     var total = addit_fees; 
     if(isNaN(total)){ 
      total=0.00; 
     } 
     output_total.val(total.toFixed(2)); 
    }; 

}); 
+0

Это нормально, чтобы ответить на ваш собственный вопрос, но, пожалуйста, подумайте о том, что вы сделали, чтобы решить эту проблему. В противном случае это должен быть комментарий. – Michelangelo

0

updateTotal() было вызвано перед тем, как определяются как функция. вы должны поместить его после вара updateTotal = функция() {...}. Или, я бы просто только непосредственно выполнять логику у вас есть.

0

Вы не можете вызвать функцию, когда она хранится в переменной перед определением переменной! updateTotal is undefined Ошибка должна появиться в консоли.

$j(document).on('keyup', '#addit_fee_cost_net', function() { 
    updateTotal();//undefined 
}); 
var updateTotal = function() { 
    addit_fees = parseFloat($j('#addit_fee_cost_net').val()); 

Сначала определите свою переменную с помощью функции в ней, а затем вызовите ее.

var x = function() {}; 
x(); 
+0

Так что я только нужно определить функцию один раз вокруг всего запроса или мне нужно определить его для каждого раздела. – troggy69

+0

@ troggy69 Желательно сделать [скрипку] (http://www.jsfiddle.net) и воспроизвести вашу проблему – Michelangelo

0

До $ (документ) .ready ({...}) определить свою функцию, потому что вы должны определить свои функции до "функций вызывающей или триггера нагрузки".

function updateTotal(status){ 
if(status == true){ 
    // if checked 
} 
else { 
    // if not checked 
} 
} 

JQuery:

$j('#addit_taxable_flag').on('change', function(){ 
updateTotal($j(this).is(':checked')); 
}); 
+0

Могу ли я попросите одолжение и спросите, может ли кто-нибудь добавить это в мой код, который я редактировал с ответами выше, и либо получить ту же ошибку, либо функции вообще не выполняются. большое спасибо заранее за всю помощь и ответы, которые были предложены и извинения за мой уровень опыта :) – troggy69

+0

Вы изменили имя селектора? –

+0

Я ничего не изменил, это прямая копия со страницы – troggy69