键入

时间:2018-06-28 11:34:01

标签: javascript jquery

我正在工作一个仅接受数字的简单字段,我想要的是在键入时在值的末尾添加“ .00”。例如1000.00。

我无法实现该格式的问题,在1位数字之后添加了'.00'并且无法再键入。

我尝试了answer here,但是没有用。

这是我的sample work

$(document).ready(function(){
	$("input").keyup(function(){

        var val = parseInt($(this).val());
        $(this).val(val.toFixed(2));

    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text">

希望你能帮助我。

谢谢。

4 个答案:

答案 0 :(得分:3)

使用这样的模糊功能:

$("input").blur(function(){

    var val = parseInt($(this).val());
    if(val){
        $(this).val(val.toFixed(2));
    }else{
        $(this).val(0);
        $(this).focus();
    }
});

答案 1 :(得分:3)

如果您要输入1并立即得到1.00,然后输入2并得到12.00,则需要保存光标位置(如here所述。

  • 所以您想获取当前光标位置
  • 格式化输入数据
  • 更新input元素
  • 将光标位置恢复到所需位置(取决于应将其移动到何处)

答案 2 :(得分:2)

尝试一下:

$( 'input' ).on( 'input', function() {
  var val = $( this ).val(),
      arr = val.split( '.' );

  if ( arr.length > 1 )
    $( this ).val( arr[ 0 ] + val.substr( val.length - 1 ) + '.00' )
  else
    $( this ).val( val + '.00' )
} ).on( 'keypress', function( e ) {
  return e.charCode == 46 || ( e.charCode >= 48 && e.charCode <= 57 )
} )
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type="text" />

答案 3 :(得分:1)

我认为您应该尝试聚焦事件。

$(document).ready(function(){
     $("input").focusout(function(){

         var val = parseInt($(this).val());
         $(this).val(val.toFixed(2));
     });
});