Javascript附加到HTML字符串中的特定位置

时间:2013-12-21 07:52:14

标签: javascript jquery ios math

我正在构建一个键盘,通过触摸设备输入金额。

http://codepen.io/bsley/pen/hrEmK

用户输入2位数后,我会附加小数。但是,一旦他们输入4位数,我需要携带小数,所以它总是从数字串的末尾开始2位数。

这样字符串总是显示为美元和美分。

我无法在#numBox中找到从字符串末尾开始的数字。此外,即使我能够,也需要在某种程度上搜索字符串中的旧小数,并在向右添加另一位数之前将其删除。

有任何帮助吗?如果这不简洁,很高兴进一步解释。请耐心等待,我是一个非常棒的人。

4 个答案:

答案 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));

 });