JavaScript插页位置
我正在开发一个手机银行应用程序,我有兴趣实时格式化货币数量input。
我已经testing了autoNumeric插件和jQuery格式的货币插件,但都在Android 2. *浏览器上有光标位置问题。
有没有人有一个JavaScript解决scheme兼容这个浏览器?
我不知道autoNumeric,但http://code.google.com/p/jquery-formatcurrency/看起来不错。; 您发布的jsFiddle示例不会正确地将插入符号放在我的桌面浏览器上,但是这样做,以及我的(Jellybean)Android手机上。 (在Gingerbread上,闪烁的光标栏可能会跳到行的末尾,但是您仍然在编辑最后的位置。)试试他们的演示: http : //www.bendewey.com/code/formatcurrency/demo/format_as_you_type html的
我通常使用accounting.js您可以从http://openexchangerates.github.io/accounting.js/#download下载;
这很容易使用。 您可以从同一个下载页面看到它是如何工作的。
我创build了一些我用来做游标pipe理的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);" />
获取和设置插入位置的function是从这里得到的: 在HTML文本框中设置键盘插入符的位置
我在Android 2.1仿真器上testing了它。 虽然模拟器很慢,但它似乎工作。 你可以在这里find截图: https : //www.dropbox.com/s/9ximuwh64kadiea/shot.JPG?dl=0
这里有一个开源,贡献良好,提交良好的图书馆: https : //github.com/plentz/jquery-maskmoney
似乎回答你的需要,不是吗? 虽然没有在Android下testing过。
看来这个jQuery插件 – NumBox – 旨在为您的问题提供解决scheme。