键入HTML/Javascript时将输入格式设置为2位小数

键入HTML/Javascript时将输入格式设置为2位小数,javascript,html,Javascript,Html,如何为货币创建输入字段?我希望它能按如下方式工作: 首字母:0.00 键入“1”:0.01 键入“2”:0.12 键入“5”:1.25 我对网页设计相当陌生,所以我正在寻找一个更简单的解决方案。我看到了一个类似的问题&这个问题的答案是有角度的,但我不确定如何在我的HTML项目中实现它。我有一个简单的文件夹,里面有HTML文件。谢谢 有点棘手 document.getElementById(“demo”).onkeydown=function(e){ //console.log(例如keyCod

如何为货币创建输入字段?我希望它能按如下方式工作:

首字母:
0.00

键入“1”:
0.01

键入“2”:
0.12

键入“5”:
1.25

我对网页设计相当陌生,所以我正在寻找一个更简单的解决方案。我看到了一个类似的问题&这个问题的答案是有角度的,但我不确定如何在我的HTML项目中实现它。我有一个简单的文件夹,里面有HTML文件。谢谢

有点棘手

document.getElementById(“demo”).onkeydown=function(e){
//console.log(例如keyCode);
如果(e.keyCode!=37&&e.keyCode!=39&&e.keyCode!=8&&e.keyCode!=46)
e、 预防默认值();
如果(e.keyCode==8 | | e.keyCode==46){
//如果已按下键(backspaceOrDel=1),则不影响
如果(backspaceOrDel==1)
e、 预防默认值();
其他的
backspaceOrDel=1;
返回;
}
如果(e.keyCode<48 | |(e.keyCode>57&&e.keyCode 105)
返回;
试试{
var val=该值;
var val1=0;
如果(val==0){
val1=e.key/100;
}
否则{
//非常棘手。我们需要val1=val*10+e.key,但它没有
//在javascript中正确使用浮动。
//在这里,你必须在逻辑上与android有所不同
var val1=parseFloat(val)*1000;
val1+=parseFloat(e.key);
val1=val1/100;
}
val1=val1.toFixed(2);
如果(!isNaN(val1))
该值=val1;
}
捕获(ex){
警告(“无效金额”);
}
};
有点棘手

document.getElementById(“demo”).onkeydown=function(e){
//console.log(例如keyCode);
如果(e.keyCode!=37&&e.keyCode!=39&&e.keyCode!=8&&e.keyCode!=46)
e、 预防默认值();
如果(e.keyCode==8 | | e.keyCode==46){
//如果已按下键(backspaceOrDel=1),则不影响
如果(backspaceOrDel==1)
e、 预防默认值();
其他的
backspaceOrDel=1;
返回;
}
如果(e.keyCode<48 | |(e.keyCode>57&&e.keyCode 105)
返回;
试试{
var val=该值;
var val1=0;
如果(val==0){
val1=e.key/100;
}
否则{
//非常棘手。我们需要val1=val*10+e.key,但它没有
//在javascript中正确使用浮动。
//在这里,你必须在逻辑上与android有所不同
var val1=parseFloat(val)*1000;
val1+=parseFloat(e.key);
val1=val1/100;
}
val1=val1.toFixed(2);
如果(!isNaN(val1))
该值=val1;
}
捕获(ex){
警告(“无效金额”);
}
};

.投标金额{
文本对齐:右对齐;
字体大小:24px;
宽度:200px;
}
String.prototype.splice=函数(idx、rem、str){
返回this.slice(0,idx)+str+this.slice(idx+Math.abs(rem));
};
函数formatNum(obj){
var-str=对象值;
开关(真){
case str.length==1:
str='0.0'+str;
打破
案例str.length==3:
str='0'+str;
}
var指数=[];
对于(变量i=0;i

.投标金额{
文本对齐:右对齐;
字体大小:24px;
宽度:200px;
}
String.prototype.splice=函数(idx、rem、str){
返回this.slice(0,idx)+str+this.slice(idx+Math.abs(rem));
};
函数formatNum(obj){
var-str=对象值;
开关(真){
case str.length==1:
str='0.0'+str;
打破
案例str.length==3:
str='0'+str;
}
var指数=[];

对于(var i=0;i您必须先尝试一些东西。我尝试过角度解决方案,但不确定如何实现它。我在iOS项目文本字段中实现了类似的功能,但是,我不确定逻辑是否相同。我的回答是相同的:您必须先尝试一些东西。我尝试过角度解决方案,但不确定如何实现它实现它。我在iOS项目文本字段中实现了类似的功能,但是,我不确定逻辑是否相同,只是回答相同:
document.getElementById("demo").onkeydown = function (e) {
        //console.log(e.keyCode);
        if (e.keyCode != 37 && e.keyCode != 39 && e.keyCode != 8 && e.keyCode != 46)
            e.preventDefault();

        if (e.keyCode == 8 || e.keyCode == 46) {
            //If already key down (backspaceOrDel=1) then no affect
            if (backspaceOrDel == 1)
                e.preventDefault();
            else
                backspaceOrDel = 1;
            return;
        }

        if (e.keyCode < 48 || (e.keyCode > 57 && e.keyCode <96) || e.keyCode > 105 )
            return;
        try {                
            var val = this.value;
            var val1 = 0;
            if (val == 0) {
                val1 = e.key / 100;
            }
            else {
                //very tricky. We needed val1=val*10+e.key but it does not 
                //work correctly with floats in javascript.
                //Here you have to different than android in logic
                var val1 = parseFloat(val) * 1000;
                val1 += parseFloat(e.key);
                val1 = val1 / 100;
            }
            val1 = val1.toFixed(2);
            if (!isNaN(val1))
                this.value = val1;
        }
        catch (ex) {
            alert("Invalid Amount");
        }
    };
<style>
     .amount_tendered {
          text-align: right;
          font-size: 24px;
          width: 200px;

    }
</style>

<form>
    <input class="amount_tendered" id="text" type="number" min="0" value="0.00" onkeyup="formatNum(this);" onclick="this.select(); activated();">
</form>

<script type="text/javascript">
    String.prototype.splice = function(idx, rem, str) {
        return this.slice(0, idx) + str + this.slice(idx + Math.abs(rem));
    };

    function formatNum(obj){
        var str = obj.value;

        switch (true){
            case str.length==1:
                str = '0.0' + str;
                break;
            case str.length==3:
                str = '0' + str;
        }

        var indices = [];
        for(var i=0; i<str.length;i++) {
            if (str[i] === "." && (str.length - i)!=3) indices.push(i);
        }

        for(var i=0; i<indices.length;i++) {
            str = str.replace('.','');
        }

        indices = [];

        for(var i=0; i<str.length;i++) {
            if (str[i] === ".") indices.push(i);
        }

        if (indices.length==0){
            str = str.splice(str.length-2, 0, ".");
        }

        if (str[0]=='0' && str[1]!='.'){
            str = str.replace('0','');
        }

        obj.value = str;
    }
</script>