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