将输入限制为数字和.在输入字段上

422*_*422 8 html javascript forms

继我提出的另一个问题之后,我真的似乎无处可去.由于我的无能.我选择了那些家伙回答,因为他回答了我的问题.

我正在收集我没有问正确的问题因为我不知道该怎么做..

所以问题是我有输入元素.保持简单;

<input type="text" maxlength="12" name="price" id="price" class="foo">
Run Code Online (Sandbox Code Playgroud)

我希望用户能够只输入数字,并且只能在该价格的任何地方输入一个句点(.).所以可能是3.00或300.00或3000

有人可以帮帮我,我会瞪着眼睛看.

问题的老问题在这里快速正则表达与警报

cam*_*aca 12

如果输入,您可以change检查数字格式是否正常.此代码将尝试获取数字并删除其他任何内容:(我假设您使用jQuery,如果没有,请执行)

$('#price').change(function() {
    $(this).val($(this).val().match(/\d*\.?\d+/));
});
Run Code Online (Sandbox Code Playgroud)

看到它在这里工作.

编辑:如果你没有jQuery,这段代码也是如此(至少在Chrome中):

document.getElementById('price').onchange = function() {
    this.value = this.value.match(/\d*\.?\d+/);
};
Run Code Online (Sandbox Code Playgroud)

编辑2:不确定我是否关注,但你也可以添加它以防止事件发生之前的字母和其他字符change:

$('#price').keypress(function(event) {
    var code = (event.keyCode ? event.keyCode : event.which);
    if (!(
            (code >= 48 && code <= 57) //numbers
            || (code == 46) //period
        )
        || (code == 46 && $(this).val().indexOf('.') != -1)
       )
        event.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)