【问题标题】:How to insert dot instead of comma in js keypress如何在js按键中插入点而不是逗号
【发布时间】:2011-10-03 10:47:23
【问题描述】:

在我的网站中,我有一个文本框,其中包含用点分隔的货币金额。用户有时会在小键盘上按点,然后在文本框中插入逗号。如何将其转换为 dot ?我试图在按键事件中做到这一点,但没有成功。

【问题讨论】:

  • 这听起来像是一个本地化问题。如果语言环境有十进制逗号,您应该能够处理以该格式输入的数字。
  • 发布您的代码会有所帮助。

标签: javascript asp.net


【解决方案1】:
<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;
   }
}

【讨论】:

  • 如果用户在输入结尾以外的任何地方输入,这将不起作用。
【解决方案2】:

如果您希望在键入时转换逗号字符,我之前在 Stack Overflow 上回答过类似的问题:

不过,我同意上面@ChrisF 的评论。

【讨论】:

    【解决方案3】:

    你可以这样做:

    $('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/

    【讨论】:

      猜你喜欢
      • 2020-05-31
      • 1970-01-01
      • 1970-01-01
      • 2015-07-20
      • 2023-03-14
      • 2012-02-27
      • 1970-01-01
      • 2011-08-20
      相关资源
      最近更新 更多