jQuery:修改keypress上的输入值

时间:2012-11-23 16:39:33

标签: jquery replace keypress

每当一个点'。'在我的输入(类型=数字)字段中键入,我希望它用逗号','。

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

该事件被解雇了,但相反,该字段完全为空。怎么了?

修改

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

6 个答案:

答案 0 :(得分:2)

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

如果您正在键入并且总是希望在文本的末尾添加“,”符号,这可能会有效。但是,如果您将光标放在文本的中间,然后按“。”,该怎么办?登录?

答案 1 :(得分:1)

也许你的文件尚未准备就绪:

jQuery(document).ready(function() {
  // your code
});

答案 2 :(得分: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

答案 3 :(得分:0)

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

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

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

答案 4 :(得分:0)

您的代码在jsfiddle上运行时似乎有效:

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

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

答案 5 :(得分:0)

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

$(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);
    }
});