私はtext_field_tag
を持っています。これはユーザーが金額を入力できるようにしています。ユーザーが入力中にこの値を動的にフォーマットするにはどうすればよいですか?たとえば、ユーザーが「5000」と入力すると、「5,000」と表示されます。ユーザーがテキスト入力フィールドを動的に入力しています
-1
A
答えて
2
あなたは簡単な方法でそれを考えるならば、私達はちょうどフォーマットさ値と現在のvalを置き換えることができます。この場合、forループを複数回使用しても(フォーマットとデフォーマッティングの間で)パフォーマンスは高価ではありません。我々は右から一致/テキストを見つける必要があるため、テキストを置き換えるための
、私は、我々は、最初のテキストを逆に正規表現の置換を適用する必要があると思うので、正規表現を使用するために、正規表現を使用していないと結果を元に戻します。これは単純にループしたり置換したりするよりはるかに悪いことです。
HTML:
<input type="text"/>
<button> Show value </button>
JS:
var format = function(text) {
var f = "";
for(var i = text.length - 1; i >=0; i--){
f = text[i] + f;
var k = text.length - i;
if(k % 3 == 0 && i > 0){
f = "," + f;
}
}
return f;
}
//defomratting the text to get the actual value
var deformat = function(text) {
return text.replace(/,/g, "");
}
$("input").on("input", function(e){
var s = this.selectionStart;
var rawVal = $(this).val();
var clen = rawVal.length;
val = deformat(rawVal);
var f = format(val);
s += f.length - clen;
$(this).val(f);
//set the selection to ensure that it's not changed during typing.
this.selectionStart = this.selectionEnd = s;
});
$("button").click(function(){
alert(deformat($("input").val()));
});
ここ コードです
1
本当に簡単に統合できるJquery Mask Pluginを使用すると、たくさんのマスクを使用できます。また、時間のsavaトンです。 すなわち
$('.money').mask('000.000.000.000.000,00', {reverse: true});
関連する問題
- 1. 入力フィールドにテキストを入力した後にボタンonclickが起動しない
- 2. Robot Framework - Selenium2Library - テキストの前にテキストを入力してフィールドに入力します
- 3. ユーザー入力に基づいて入力フィールドを追加する
- 4. ユーザー入力値入力フィールドに基づいてNgRepeatを再レンダリングします
- 5. ユーザー入力時に入力フィールドの値を通貨として入力
- 6. Selenium IDEは入力フィールドにテキストを入力しません
- 7. チェックボックス動的入力フィールド
- 8. 動的にユーザーのテキスト入力と動的リンクを変更します
- 9. IEユーザーが検索入力フィールドに入力できない
- 10. jQueryは、他の入力フィールドからの値に基づいて入力フィールドを自動入力します
- 11. 入力フィールドのバグ - テキストが
- 12. テキスト入力要素の入力IDを動的に削除します
- 13. Angular2は入力フィールドにテキストを入力できません
- 14. 入力フィールドにユーザー入力データがあるときにデータを動的に表示できません
- 15. JQuery:動的に作成された入力フィールドの入力イベント
- 16. テキスト入力フィールド内にスパン?
- 17. 入力フィールドにテキストを入力した後、ボタン
- 18. 入力ボックスにデータを自動的に入力します
- 19. サブミット後に入力ボックスにユーザー入力テキストを保存する
- 20. 別の入力フィールドに基づいてフォーム入力を入力したい
- 21. redux-formフィールドは入力フィールドにテキストを入力できません
- 22. ユーザーがExt.form.field.HtmlEditorでテキストを入力したときにCtrl + Enterを入力する
- 23. ユーザーの入力に基づいて入力フィールドにデータを表示
- 24. テキスト入力フィールドのCSSバグ
- 25. iMacrosのテキスト入力フィールド
- 26. テキスト入力フィールドのアラインメント
- 27. テキスト入力フィールドのラベルニーモニック
- 28. Laravel動的入力フィールドを追加
- 29. ajaxの動的入力フィールドを追加
- 30. ユーザー入力として*が入力されました
ユーザーが既存の値の先頭または中央を編集しようとしている可能性があるため、必要な書式設定を行った後に*現在のカーソル位置をメモして復元する*キー押しイベントハンドラを使用します。 – nnnnnn
javascriptの正規表現で.keyup()を使用します。 –
プラグインを使用しますか? – Mamun