2

每当一个点'。在我的输入(类型=数字)字段中输入,我希望将其替换为逗号“,”。

$(box).find('input[type=number]').keypress(function(evt){
        if(evt.which==46){
            $(this).val($(this).val()+',');
            evt.preventDefault();
        }
    });

该事件被很好地触发,但相反,该字段完全为空。怎么了?

编辑

我这样做的原因是 Chrome(最新版本)与 HTML5 建议相反,在输入类型 = 数字中使用逗号并丢弃点。我目前只为 Chrome 开发,因为我暂时无法在其他地方测试我的应用程序。对此(异常?)情况的任何评论将不胜感激。

4

6 回答 6

3
$(this).val($(this).val() + ',');

如果您正在键入并且总是想在文本末尾添加“,”符号,这可能会起作用。但是,如果您将光标放在文本中间然后按“。”会怎样?符号?

于 2013-11-25T10:35:46.343 回答
1

也许您的文档还没有准备好:

jQuery(document).ready(function() {
  // your code
});
于 2012-11-23T16:55:07.433 回答
0

您的代码在 jsfiddle 上运行时似乎可以正常工作:

$(document).find('input').keypress(function(evt){ 
        if(evt.which==46){
            $(this).val($(this).val()+',');
            evt.preventDefault();
        }
    });​

http://jsfiddle.net/cornel_gav/cDE3L/

于 2012-11-23T16:46:51.377 回答
0

要使字符替换在任何光标位置起作用,您可以绑定到 keyup 事件并替换 this.val() 中已经插入的字符。

$(document).on('keyup','.myField"]', function(e,i){
    if(e.keyCode==107)
    {
        var start = this.selectionStart,
            end = this.selectionEnd;
        $(this).val($(this).val().replace(/\+/,'|'));
        this.setSelectionRange(start, end);
    }
});
于 2014-11-11T15:14:10.490 回答
0

我们是我的朋友,不知道为什么,似乎有用的键码是 190 而不是 110。

尝试 :

$(document).ready(function(){

     $(document).find('input[type=number]').live('keydown',function(evt){
            if(evt.which == 190){
                $(this).val($(this).val()+",");
                evt.preventDefault();
            }
        });

});

这是实时预览 http://jsfiddle.net/RTEcJ/8/

查看键码,您可以尝试在输入中检查您需要的键码:http: //www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes

于 2012-11-23T16:42:57.573 回答
0

您可以像这样使用子字符串:

str.substring(0,str.length - 1) + ','

然而,这可能不是一个理想的解决方案。

于 2012-11-23T16:43:40.437 回答