我正在开发一个移动银行应用程序,我有兴趣实时格式化货币金额输入。
我已经测试了autoNumeric plugin和jQuery Format Currency Plugin,但两者都在Android 2. *浏览器上存在光标位置问题。
是否有人拥有与此浏览器兼容的JavaScript解决方案?
答案 0 :(得分:1)
我不知道autoNumeric,但http://code.google.com/p/jquery-formatcurrency/看起来很不错。您发布的jsFiddle示例并未将插入符号正确放置在我的桌面浏览器上,但这样做,以及我的(Jellybean)Android手机上也是如此。 (在Gingerbread上,闪烁的光标栏可能会跳到行的末尾,但您仍然会在最后的位置进行编辑。)尝试他们的演示:http://www.bendewey.com/code/formatcurrency/demo/format_as_you_type.html
答案 1 :(得分:1)
我通常使用accounting.js 您可以从http://openexchangerates.github.io/accounting.js/#download
下载它非常易于使用。你可以从同一个下载页面看到它是如何工作的。
我创建了几个用于执行游标管理的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
答案 2 :(得分:0)
这是一个开源,贡献良好,做得很好的库:https://github.com/plentz/jquery-maskmoney
似乎回答你的需要,不是吗? 尚未在Android下测试过它。
答案 3 :(得分:-1)
看来这个jQuery插件 - NumBox - 旨在为您的问题提供解决方案。