键入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>