2016-12-22 2 views
0

以下に、使用しているコードの簡単な例と、達成しようとしているものを示します。
特定のイベントで関数を呼び出す必要があるjQueryで複数の変数を追跡しています。問題は、変更されたばかりの変数だけを使用することはできないということです。jQueryイベントで複数の変数をトラッキングするときに現在の変数を使用する

HTML本文セクションには、人が数字を入力できる2つの入力フィールドがあります。その数字はカンマで1000人のセパレータとしてフォーマットする必要があります。 Elias Zamariaのおかげで、私はこれに対して良い解決策を見つけました(https://stackoverflow.com/a/2901298/7327579)。今私はこれをjQueryで実装したいので、数値入力を一度に取得するすべての変数を追跡できます。 HTMLのヘッドで

<html> 
    <title></title> 
    <head> 

私は私の変数を追跡するために私のスクリプトを挿入します。

<script language="javascript"> 
     var Currency = function() { 
     this.currencyType = $("#businessAuthorisation, #businessIncome, #entityIncome, #entityAuthorisation); 

数字をフォーマットしてのみ変更されている現在の変数から現在の番号を取得する必要があります機能:

  this.formatCurrency = function(x) { 
       var parts = x.toString().split("."); 
       parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ","); 
       return parts.join("."); 
      }; 
     }; 

追跡を開始し、keyUpイベントイベントに私の関数が呼び出されます。現在の変数のみが呼び出された関数のパラメータでなければなりません。

 $(document).ready(function() { 
     var currency = new Currency(); 
     currency.currencyType.keyup(function() { 
      currency.formatCurrency(this); 
     }); 
     }); 
    </script> 
    </head> 

ここでは以下の私の形で関わるの入力フィールドです:

<body> 
    <form> 
     <table> 
     <tr> 
      <td><input type="number" name="entityAuthorisation" id="entityAuthorisation" value="<%=entityAuthorisation%>></td> 
     </tr>  
     <tr> 
      <td><input type="number" name="businessAuthorisation" id="businessAuthorisation" value="<%=businessAuthorisation%>"></td> 
     </tr> 
     <tr> 
      <td><input type="number" name="entityIncome" id="entityIncome" value="<%=entityIncome%>"></td> 
     </tr>  
     <tr> 
      <td><input type="number" name="businessIncome" id="businessIncome" value="<%=businessIncome%>"></td> 
     </tr> 
     </table> 
    </form> 
    </body> 
</html> 

がどのように機能が唯一のイベントを発生させ、現在の要素に適用されることをことを確認することができますか?

+1

実際のイベントがトリガーされた要素を知りたいのですか? #entityAuthorisation要素をクリックすると、jQueryで#entityAuthorisation要素を取得する必要がありますか? これが必要な場合は、$(event.target)を使用できます。 これは、クリックが発生した場合の正確な要素を提供します – Nitesh

+0

この場合、(この場合は)数値入力を受け取り、ちょうど数値入力を受け取った変数に応じてその特定の変数で関数が呼び出されるその機能のパラメータ。だから私は将来使用されるすべての要素を知っていますが、現在使用されている要素(定義された要素のグループに属している要素)のみが必要です。下のBarmarの答えは私の質問には完璧ですが、私はその提案に感謝し、次の時間に何かを試してみるのは面白いと思っています。 – sRas091

答えて

1

jQueryイベントハンドラでは、thisは、イベントがトリガされた要素を参照します。入力値を取得するには、.valueを使用する必要があります。したがって、次のように記述する必要があります。

$(document).ready(function() { 
    var currency = new Currency(); 
    currency.currencyType.keyup(function() { 
     this.value = currency.formatCurrency(this.value); 
    }); 
    }); 
+0

魅力的な作品です!このように見えるときは明白ですが、そこには到達できませんでした。非常に迅速な対応をありがとう! – sRas091

関連する問題