2016-08-10 12 views
0

税金を追加するために金額が追加された後もチェックボックスがオンになっていない場合、チェックボックスをクリックするか追加しない場合は税金を追加しようとしています。それがチェックされていない場合は、税金を取り除いてください。私のコードは下ですが、私はupdatetotalのエラーメッセージが表示されている関数ではありません。私が読んだことから、これはうまくいくはずですが、そうではありません。これはデータベースチェックボックスにチェックが入っている場合は、これ以外の操作をしないでください

$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)); 
     }; 
    } 
    }); 
}); 

上の非競合jqueryのためのセットアップです$jを無視してください、私はちょうどので、私は今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

'event'ハンドラコードの外で適切な' function updateTotal() 'を定義してください。あるいは単に他のヘルパー関数を使用しないで、そこに計算ロジックを書くだけです。 – 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は()関数として定義される前に呼ばれていました。あなたがするvar 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 [fiddle](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

Can i誰かが私のコードにこれを加えることができるかどうか質問してください。上記の答えで編集したのと同じエラーが出るか、関数がまったく実行されません。私の経験レベルのために提供されたすべての助けと答えの前に多くのおかげです。 – troggy69

+0

セレクター名を変更しましたか? –

+0

私は何も変更していないので、それはページからのストレートコピーです – troggy69

関連する問題