私はモバイルバンキングアプリケーションを開発しており、リアルタイムで通貨額の入力をフォーマットすることに興味があります。JavaScriptキャレットポジション
私は既にautoNumeric pluginとjQuery Format Currency Pluginをテストしましたが、両方ともAndroid 2. *ブラウザでカーソル位置の問題があります。
誰にもこのブラウザと互換性のあるJavaScriptソリューションがありますか?
私はモバイルバンキングアプリケーションを開発しており、リアルタイムで通貨額の入力をフォーマットすることに興味があります。JavaScriptキャレットポジション
私は既にautoNumeric pluginとjQuery Format Currency Pluginをテストしましたが、両方ともAndroid 2. *ブラウザでカーソル位置の問題があります。
誰にもこのブラウザと互換性のあるJavaScriptソリューションがありますか?
私はautoNumericについてわかりませんが、http://code.google.com/p/jquery-formatcurrency/はかなりよく見えます。あなたが投稿したjsFiddleの例では、デスクトップブラウザにキャレットが正しく配置されていませんが、これは私の(Jellybean)Android phoneでも同様です。 (ジンジャーブレッドでは、点滅するカーソルバーは、行の最後にジャンプするかもしれないが、それは最後にあった場所あなたはまだ編集されます。)彼らのデモを試してみてください:http://www.bendewey.com/code/formatcurrency/demo/format_as_you_type.html
このプラグインには、Andoid 2. *ブラウザのカーソル位置の問題もあります。 –
私は通常、あなたはそれが非常に使いやすいですhttp://openexchangerates.github.io/accounting.js/#download
からダウンロードすることができ accounting.js使用しています。同じダウンロードページからどのように動作するかを見ることができます。
私はカーソル管理を行うために使用するカップルのjavascript機能を作成しました:
function formatMoney(myField){
if(myField.selectionStart || myField.selectionStart == '0'){
var len = myField.value.length;
var caretPos = doGetCaretPosition(myField);
myField.value = accounting.formatMoney(myField.value);
var newlen = myField.value.length;
setCaretPosition(myField, newlen != len ? (newlen > len ? caretPos + 1 : caretPos - 1) : caretPos);
}
}
function doGetCaretPosition (ctrl) {
var CaretPos = 0;
// IE Support
if (document.selection) {
ctrl.focus();
var Sel = document.selection.createRange();
Sel.moveStart ('character', -ctrl.value.length);
CaretPos = Sel.text.length;
}
// Firefox support
else if (ctrl.selectionStart || ctrl.selectionStart == '0')
CaretPos = ctrl.selectionStart;
return (CaretPos);
}
function setCaretPosition(elem, caretPos) {
elem.value = elem.value;
if(elem != null) {
if(elem.createTextRange) {
var range = elem.createTextRange();
range.move('character', caretPos);
range.select();
}
else {
if(elem.selectionStart) {
elem.focus();
elem.setSelectionRange(caretPos, caretPos);
}
else
elem.focus();
}
}
}
あなたは、テキストフィールドに関数を使用することができます。
<input id="myField" type="text" onkeyup="formatMoney(this);" onChange="formatMoney(this);" onBlur="formatMoney(this);" />
取得および設定キャレット位置機能はここから入手しました:Set keyboard caret position in html textbox
私はAndroid 2.1エミュレータでそれをテストしました。エミュレータは遅かったが、動作していたようだ。あなたはここにスクリーンショットを見つけることができます。https://www.dropbox.com/s/9ximuwh64kadiea/shot.JPG?dl=0
私はこのソリューションをAndroid 2.3.6デバイスでテストしましたが、残念ながらキャレットポジションの問題は残っています。 –
は、ここでオープンソースだし、うまく貢献し、うまくCOMMITEDライブラリ:https://github.com/plentz/jquery-maskmoney
はそれはない、あなたの必要性に答えるないように見えますか? しかし、Havent'tはAndroidでもテストしました。
残念ながらそこにあるようですいくつかのAndroidの問題:https://github.com/plentz/jquery-maskmoney/issues?utf8=%E2%9C%93&q=android –
私の悪い。次回に問題をチェックします。 –
数字のマスクで苦労した後、私は携帯電話のブラウザでそれらを無効にしなければなりませんでした。私が知る限りは、回避策はありません。 – devundef
このバージョンのAndroidブラウザは、 'obj.selectionStart'と' obj.selectionEnd'を正しくサポートしていませんか? – scunliffe
すでにjQueryを使用している場合は、jQuery ++を試してみましたか(タブをキャプチャしてキーを押した後にキャレットの位置を正しく配置するために使用しましたか?私はそれをテストしたときに素晴らしい作品。それにかかわらず、いつでもRange(範囲)メソッドとSelection(選択)メソッドを使用できます(jQueryを必要としません)。 jquerypp.com –