首页 > 解决方案 > 将小数点放在从右到左键按下事件的第 2 位之后

问题描述

当用户输入数字时,我需要从右到左按此顺序编号

00.01

00.12

01.23

12.34

像最初的“00”。应该在那里。大多数解决方案是在聚焦事件后限制 2 个位置的值或转换为小数

我尝试了这段代码,但无法获得正确的逻辑

http://jsfiddle.net/BB7pS/310/

$(document).ready( function(e){

    $('#input').keydown( function(e){

        var s1=$(this).val();

    if (s1.length <2) 
    {
    s1 = '0.0' + s1;
      $(this).val(s1);
      e.preventdefault();
    }

   if (s1.length < 5) 
    {
    s1='';
    s1=$(this).val().slice(3);
    s1 = '0.' + s1;
      $(this).val(s1);
    }

    });
});

我需要一些建议如何实现。谢谢

标签: jqueryinputdecimal

解决方案


您可以尝试以下逻辑来替换keyup事件中的字符和小数

$(document).ready( function(e){
    $('#input').keyup( function(e){

        var s1=$(this).val();
    if(s1){
       s1 = s1.replace(".","");
       s1 = "000" + s1; // append zeros so that 00.0X can be achieved
       var position = s1.length - 2; //calculate decimal position which is before last 2 digits
       var output = [s1.slice(0, position), ".", s1.slice(position)].join(''); // create string with decimal
       console.log(output);
      $(this).val(parseFloat(output).toFixed(2)); // push the value to input
    } else {
      $(this).val("00.00");
    }

    });
});

JSFiddle


推荐阅读