2009-08-04 21 views
0

アップデートを保存/ w値Javascriptの乗算別のセルに

  • が設定値を作成します。私が達成しようとしてきた何

     $('.gasamount').sum(); 
         var num = $(this).attr("id").replace(/[A-Za-z$,-]/g, ""); 
         $('#gasmoney'+num).val(<cfoutput>#mileage#</cfoutput> * $(this).val()); 
         $('.gasmoney').sum(); 
    

    セルの行。

  • ユーザーの値に格納された値を掛けます。
  • その結果を取得し、その行のすぐ下のセルに値を表示します。

これは機能しないようです。私が近くにいると思うたびに、私はオブジェクトや未定義の値を返しています。

Javascriptを


$('.calc').change(function(){ 
     var classArray = $(this).attr('class').split(' '); 

     $.each(classArray, function(){ 

      var totalsum = $('.'+this).sum(); 
      $('.ttl'+this).val(Number(totalsum).toFixed(2)); 

      var gas = $('.gasamount4'); 
      var gasAmt = gas.val() * <cfoutput>#mileage#</cfoutput>; 
      var gasTot = $('gasmoney4').val(gasAmt); 
      gasTot; 
      alert(gasTot); 
     }); 

     //Finding the grandtotal 
     var grandTotal = $('.row26').parent().children('td:last').children('input'); 
     var sum = $('.row25').parent().children('td').children('.calc').sum(); 
     grandTotal.val(Number(sum).toFixed(2)); 
    }); 

のColdFusion/HTML何かが明らかにされなかった場合は


 <cfloop from="1" to="#ArrayLen(labels)#" index="r"> 
     <tr> 
      <td class="labels"><cfif ArrayIsDefined(labels,r) AND labels[r] NEQ "Open">#labels[r]#</cfif></td> 
      <cfloop from="1" to="7" index="i"> 
      <td id="Day#i#" class="row#r# col#i#"> 
       <cfif r EQ 1>#Left(DayOfWeekAsString(i),3)#<cfelse><cfif r EQ 2><input type="text" class="date-mask" /><cfelse><input type="text" class="calc <cfif labels[r] EQ "Personal Car: Mileage ##">gasamount#i# </cfif> <cfif labels[r] EQ "Personal Car: Mileage $">gasmoney#i# </cfif><cfif labels[r] EQ "Daily Totals">ttlC#i#<cfelse>R#r# C#i#</cfif><cfif labels[r] EQ "Grand Total">gTtl#r#</cfif>" <cfif labels[r] EQ "Daily Totals" OR labels[r] EQ "Personal Car: Mileage $">readonly="readonly"</cfif> /></cfif></cfif></td> 
      </cfloop> 
      <td class="totals"><cfif r EQ 1>Total<cfelse><input type="text" class="ttlR#r#" readonly="readonly" /></cfif></td> 
     </tr> 
     </cfloop> 

、ちょうど尋ねると、私がために最善を尽くします追加情報を提供する。ありがとう。

+1

実際の問題の説明*は良いスタートになります。 :)目標は良いですが、何が間違っているのかわからない、誰かのコードを解読することは、少なくとも私にとってはうまくいきません。 – Tomalak

+0

...これは私のコードです。もしあなたが "私は何か追加情報を提供するために最善を尽くすつもりです"と言えば、誰かがcoldfusionに精通していないと思われます。問題が述べられています。 "私は試していた"、言い換えれば、私はできません。プログラマーは一般的に火薬爆弾を持っているので、彼ら自身のために追加のコードを見ることができるはずです。しかし、ありがとうございます.. –

+0

これは、サーバー側のものではなく、htmlの出力を見るのがずっと簡単です。 Console.log(totalSum)とconsole.log(gasTot)とconsole.log(grandTotal)を使用して、数学がどこで失敗したかを確認しましたか? –

答えて

1

コードから、「Personal Car Mileage#」行の各セルの数字を取得し、それにユーザーのマイレージレートを掛けて、その結果を「Personalカーマイレッジ$ "の行。

これを試してみてください:

$('input.R4').change(function() { 
    var val = this.value, 
    cell = this.className.match(/C\d+/)[0]; 

    val = parseInt(val, 10); 
    val *= <cfoutput>#mileage#</cfoutput>; 
    $('td.row5 input.' + cell)[0].value = val.toFixed(2); 
}); 

編集:

$( 'input.R4')は、 "R4" のクラスにすべての入力要素を選択しなければならないので、これは上のすべての入力要素になります"Personal Car Mileage#"の行に移動します。

「セル」変数(振る舞いではあまり名前が付けられません)は、変更されたばかりのセルの列を取得します。したがって、最初の入力ボックスを変更すると、これは「C1」になります。

Ergo、$( 'td.row5 input.C1')は、テーブルの5行目( "Personal Car Mileage $"行)のクラス "C1"の入力を取得し、その値を計算された金額。

このように、行内の各セルでは既に動作しているはずです。これは、行、セル、および入力要素に有用なクラス名を与えたために可能ですが、後で数値が変更される可能性があるので注意してください。誰かが新しい行をテーブルに挿入した後に数字を投げ捨てると、このコードが破損する可能性があります。

「gasamountX」と「gasmoneyX」を追加すると正しい軌道に乗っていますが、数値を取るべきだと思います。コードを変更すると、コードを次のように変更できます。

$('input.gasamount').change(function() { 
    var val = this.value, 
    column = this.className.match(/C\d+/)[0]; 

    val = parseInt(val, 10); 
    val *= <cfoutput>#mileage#</cfoutput>; 
    $('input.gasmoney.' + column)[0].value = val.toFixed(2); 
}); 

意味がありますか?

+0

Chris、ありがとうございました!私はこれを加えてそれをテストしました。その個々の細胞のために働いているようです。私はいくつかの変更を加え、私が思いつくことができるものを見るつもりです。 –

+0

Chris、あなたは、その行全体のどのセルでどのように動作するのか考えていますか?たとえば、 'input.R4'の代わりに '.gasamount' +これを使用します。 –

+0

意味はありますが、意味はありません。私のアプローチを少し変えるつもりです。私が変更を加えると、私はそれを投稿します。 –