HTML
<input type="number" class="atm" id="price_1" value="0.00" />
<input type="number" class="atm" id="price_2" value="0.00" />
jQuery
$(function() {
var input = ""; //holds current input as a string
$(".atm").keydown(function(e) {
//handle backspace key
if(e.keyCode == 8 && input.length > 0) {
input = input.slice(0,input.length-1); //remove last digit
$(this.id).val(formatNumber(input));
}
else {
var key = getKeyValue(e.keyCode);
if(key) {
input += key; //add actual digit to the input string
$(this.id).val(formatNumber(input)); //format input string and set the input box value to it
}
}
return false;
});
function getKeyValue(keyCode) {
if(keyCode > 57) { //also check for numpad keys
keyCode -= 48;
}
if(keyCode >= 48 && keyCode <= 57) {
return String.fromCharCode(keyCode);
}
}
function formatNumber(input) {
if(isNaN(parseFloat(input))) {
return "0.00"; //if the input is invalid just set the value to 0.00
}
var num = parseFloat(input);
return (num / 100).toFixed(2); //move the decimal up to places return a X.00 format
}
});
它不起作用,从classes(atm)获取的id根本无法使用。我需要有人帮助我解决这个问题。我很着急。谢谢。我使用console.log来检查this.id,它实际上获得了正确的ID,但是何时执行$(this.id).val();。它不起作用
答案 0 :(得分:2)
如果要按ID选择,则应使用$('#'+this.id)
。
$(this)
将为您提供触发input
事件的keydown
。
答案 1 :(得分:0)
尝试这些选项
(1)
$(this).val(formatNumber(input));
(2)
$("#"+this.id).val(formatNumber(input));
答案 2 :(得分:0)
您已经处于corrent上下文中,那么当您在事件函数中时,可以使用以下语法:
=calcformattingval(B5)=$A$1
答案 3 :(得分:0)
对不起,刚才我弄清楚了,这不是this.id的问题。是var输入的问题。 html中的两个输入共享js中的一个var输入
答案 4 :(得分:0)
您可以使用此代码获取ID值。
$(this).attr('id')。val();