我正在构建一个键盘,通过触摸设备输入金额。
http://codepen.io/bsley/pen/hrEmK
用户输入2位数后,我会附加小数。但是,一旦他们输入4位数,我需要携带小数,所以它总是从数字串的末尾开始2位数。
这样字符串总是显示为美元和美分。
我无法在#numBox中找到从字符串末尾开始的数字。此外,即使我能够,也需要在某种程度上搜索字符串中的旧小数,并在向右添加另一位数之前将其删除。
有任何帮助吗?如果这不简洁,很高兴进一步解释。请耐心等待,我是一个非常棒的人。
答案 0 :(得分:1)
修正了问题
if (digits %2 == 0)
{
var mystring = $( "#numBox" ).html();
mystring = mystring.replace('.','');
$( "#numBox" ).html(mystring);
$( "#numBox" ).append(".");
console.log("worked!");
}
检查http://codepen.io/bsley/pen/hrEmK
上的更新代码试试这个
$(document).ready(function(){
var digits = 0;
var numBox = document.getElementById('numBox');
$('.key').click(function(){
if(this.innerHTML == '0'){
if (numBox.innerHTML.length > 0)
numBox.innerHTML = numBox.innerHTML + this.innerHTML;
digits += 1;
//console.log("digits");
}
else
// add digits
numBox.innerHTML = numBox.innerHTML + this.innerHTML;
digits += 1;
//console.log(digits);
event.stopPropagation();
});
$('.btn').click(function(){
if(this.innerHTML == 'DEL'){
var numBox = document.getElementById('numBox');
if(numBox.innerHTML.length > 0){
// delete a digit
numBox.innerHTML = numBox.innerHTML.substring(0, numBox.innerHTML.length - 1);
digits -= 1;
//console.log(digits);
}
}
else{
// clear numbox
document.getElementById('numBox').innerHTML = '';
digits = 0;
//console.log(digits);
}
event.stopPropagation();
_checkForDecimals();
});
//decimal entry
$('.key').click(function(){
_checkForDecimals();
});
function _checkForDecimals()
{
if (digits > 2) {
var mystring = $( "#numBox" ).html();
mystring = mystring.replace('.','');
var firstPartOfString = mystring.slice(0, mystring.length - 2);
var secondPartOfString = mystring.slice( mystring.length - 2,mystring.length);
//alert(firstPartOfString+'.'+secondPartOfString)
mystring = firstPartOfString+'.'+secondPartOfString;
$( "#numBox" ).html(mystring);
//$( "#numBox" ).append(".");
console.log("worked!");
}
}
});
答案 1 :(得分:0)
尝试这样的事情
var str = "12.345";
str= str.replace("\.","");
if(str.length > 2){
str = str.substr(0, str.length - 2) + '.' + str.substr(str.length - 2);
}
alert(str);
答案 2 :(得分:0)
我检查了你的修复。但它似乎有问题。如果你按下所有键从1到9,数字变为12345678.9。但根据你的要求它应该是1234567.89 [如果我理解正确]。 请尝试以下解决方案,看看它是否符合您的要求。请注意,在代码块的末尾我添加了两个函数“GetNumberAfterAppendingDecimal”和“GetCleanString”,然后我使用了$(。key).click();
$('.key').click(function(){
var inputNumber=GetCleanString($("#numBox").html());
$("#numBox").html(GetNumberAfterAppendingDecimal(inputNumber));
});
function GetNumberAfterAppendingDecimal(str) {
if (str.length < 3)
return str;
var positionFromEnd = 2;
var reversedStr = str.split('').reverse().join('');
if (str.length == 3)
positionFromEnd -= 1;
reversedStr = [reversedStr.slice(0, positionFromEnd), ".", reversedStr.slice(positionFromEnd)].join('');
return reversedStr.split('').reverse().join('');
}
function GetCleanString(str) {
str = str.replace(/[\r]+/, '');
str = str.replace(/[\n]+/, '');
str = str.replace(/[\t]+/, '');
str = str.replace('.', '');
str = $.trim(str);
return str;
}
答案 3 :(得分:0)
非常简单,只需在$(。key).onclick()中为$(div .btn).onclick()重新编写代码..见下文:
$('div.btn').click(function(){
var inputNumber=GetCleanString($("#numBox").html());
$("#numBox").html(GetNumberAfterAppendingDecimal(inputNumber));
});