3

ユーザーが生成したテキストの後に、html 入力の単位として「USD」を追加しようとしています。現在、入力テキストの前に $ を追加し、キーアップごとに入力を再構築する jquery があります。

   $('#pledge_amt_gross_total').on('keyup',function(){
      var text = this.value;
      $(this).val("");
      if (text.indexOf("$") == -1){
         text = "$ " +text;
       }
      $(this).val(text);

    }) 

これはbefore、ユーザー入力テキストに対しては何でも機能しますが、ユーザー テキストに何かを追加しようとするとafter、正しく機能しません。

4

2 に答える 2

4

入力で数値を見つけて、必要なものにラップする正規表現を使用したバージョンを作成しました。ユーザーが入力を完了する前にカーソルが移動しないように、タイムアウトを追加しました。このフィドルで試してみてください

コード :

var formatTimeout;
$("#pledge_amt_gross_total").on("keyup", function() {
    var self = $(this);
    clearTimeout(formatTimeout);
    formatTimeout = setTimeout(function() {
        var regex = /\d+/;
        var amount = self.val().match(regex);
        if (amount.length > 0) {
         self.val("$ " + amount + " USD");   
        } else {
              self.val("");       
        }   
    }, 1000);
});

より速くまたはより遅くしたい場合は、setTimout 関数でフォーマットが適用されるまでの時間を変更できます。


編集 :

任意の数値を次の形式で連結したい場合:フィドル

var formatTimeout;
$("#pledge_amt_gross_total").on("keyup", function() {
    var self = $(this);
    clearTimeout(formatTimeout);
    formatTimeout = setTimeout(function() {
        var regex = /\d+/g;
        var amount = self.val().match(regex);
        if (amount.length > 0) {
         self.val("$ " + amount.join("") + " USD");   
        } else {
              self.val("");       
        }   
    }, 1000);
});

正規表現を、任意の番号を見つけるグローバル正規表現に置き換えました。次に、数字を 1 つに結合します。

于 2013-07-26T19:24:17.663 に答える
2

変えるだけ

if (text.indexOf("$") == -1){
    text = "$ " +text;
}

if (text.indexOf("$") == -1){
    text = "$ " +text;
}
if (!(test.indexOf("USD") >= 0)){
    text = text + " USD";
}
于 2013-07-26T18:49:42.003 に答える