当Android键盘不显示小数时键入的格式编号

时间:2014-08-10 13:30:12

标签: javascript html

背景
在Samsung Note和其他Andriod设备上使用默认的Android浏览器(互联网)时,使用类型"数字"编辑输入字段时键盘是一个数字键盘,上面没有小数点按钮!

<input id="x" type="number" value="" />

enter image description here

我注意到美国银行Andriod应用程序在数字键盘上没有小数点。这就是他们处理它的方式。

  1. 点击字段
  2. 输入第一个数字&#34; 1&#34;和字段显示0.01
  3. 键入第二个号码&#34; 2&#34;和字段显示0.12
  4. 键入第三个号码&#34; 3&#34;和字段显示1.23
  5. 键入数字&#34; 4&#34;和字段显示12.34
  6. 我想在我的网站上模仿这个将用于移动设备的功能。

    来自demomplungjan非常接近。我想一直显示两个小数位,这个解决方案显示直到第四个字符按下:

    $("#txtamt").keyup(function(obj, evt) {
    var event = (window.event) ? window.event : evt;
    
        //ignore arrow keys so that user can move curser 
        switch(event.keyCode)
        {
            case 37:
            case 38:
            case 39:
            case 40:
                return;
            default:
                break;
        }                
    
        var str = document.getElementById("txtamt");
        str.value = str.value.replace(".", "");
    
        if (str.value.length == 3) {
            var val = parseFloat(str.value);
            var val1 = (val / 10).toFixed(1);
            str.value = val1;
        }
        else if (str.value.length > 3) {
            var val = parseFloat(str.value);
            var val1 = (val / 100).toFixed(2);
            str.value = val1;
        }        
    

    });

    一个明显的解决方案就是更改输入类型并使用标准全键盘显示。

5 个答案:

答案 0 :(得分:1)

我认为这对您使用简单的javascript

有用

HTML

<input type="text" id="number" onchange="formatNumber()"/>

JS

function formatNumber(){
  var number = document.getElementById('number').value;
  document.getElementById('number').value = ((+number)/100).toFixed(2);
}

DEMO

但是当你离开文本框时这将有效。

答案 1 :(得分:1)

我做了一些研究。

您可以编写一个智能代码,首先检查用户是否已停止输入值,然后将输入转换为所需的形式,如下所示:

HTML:

  <input type="text" id="num" />

JS代码:

var timeoutReference;
$(document).ready(function() {
    $('input#num').keypress(function() {
        var _this = $(this); 

        if (timeoutReference) clearTimeout(timeoutReference);
        timeoutReference = setTimeout(function() {
            number = document.getElementById('num').value;

      document.getElementById('num').value = ((+number)/100).toFixed(2);
        }, 1000);
    });
});

直播Demo

请参阅this SO答案以获取更多解释。

答案 2 :(得分:0)

试试这个,DEMO这里

$('#test').change(function() {
    var testValue = parseInt($('#test').val());

    $('#test').val((testValue/100));
});

答案 3 :(得分:0)

查看这个JSFiddle演示。这将展示你想知道的javascript方面:

Click here to visit the JSFiddle demo

他们获得神奇数字的关键是这一行:

var output = parseInt(document.getElementById("inputID").value)*.01;
document.write(output);

答案 4 :(得分:0)

此解决方案模仿问题中描述的功能和用例。我将type和value属性添加到输入字段。

Demo

<input id="txtamt" maxlength="8" type=numberic value="0.00" />

修改代码以格式化任意长度的输入字符串(删除条件语句)。

$("#txtamt").keyup(function (obj, evt) {
var event = (window.event) ? window.event : evt;

//ignore arrow keys so that user can move curser 
switch (event.keyCode) {
    case 37:
    case 38:
    case 39:
    case 40:
        return;
    default:
        break;
}

var str = document.getElementById("txtamt");
str.value = str.value.replace(".", "");

var val = parseFloat(str.value);
var val1 = (val / 100).toFixed(2);
str.value = val1;

});