如何在js keypress中插入点而不是逗号

时间:2011-10-03 10:47:23

标签: javascript asp.net

在我的网站中,我的文本框包含由点分隔的货币金额。用户有时按下numpad上的点,并在文本框中插入昏迷。如何将其转换为点?我试图在按键事件中这样做,但没有指示让它工作。

3 个答案:

答案 0 :(得分:6)

<input type='text' onkeypress='return check(this,event);'>

function check(Sender,e){
  var key = e.which ? e.which : e.keyCode;
  if(key == 44){
     Sender.value += '.';
     return false;
  }
}

更新:如果您在输入框中的任意位置输入

,这应该有效
function check(Sender,e){
  var key = e.which ? e.which : event.keyCode;
  if(key == 44){
     if (document.selection) { //IE
       var range = document.selection.createRange();
           range.text = '.';
     } else if (Sender.selectionStart || Sender.selectionStart == '0') { 
      var start = Sender.selectionStart;
      var end   = Sender.selectionEnd;
      Sender.value = Sender.value.substring(0, start) + '.' +
           Sender.value.substring(end, Sender.value.length);
      Sender.selectionStart = start+1;
      Sender.selectionEnd   = start+1;     
     } else {
      Sender.value += '.';
     }
     return false;
   }
}

答案 1 :(得分:2)

如果你想要在输入时改变一个逗号字符,我之前在Stack Overflow上回答了类似的问题:

但是,我同意@ ChrisF上面的评论。

答案 2 :(得分:0)

你可以这样做:

$('input').keyup(function(e){
    var code = e.which ? e.which : e.keyCode;
     console.log(code);
    if (code === 110){
        var input = this.value;
        input = input.substr(0, input.length -1);
        console.log(input);
        input += ',';
        this.value = input;        
    }

});

小提琴http://jsfiddle.net/PzgLA/