仅允许在输入字段中键入数字

Mit*_*ell 3 javascript jquery

我想让本网站上的电话号码字段只接受数字或数字.我没有编辑HTML代码的权限,所以可以通过定位字段的ID来使用jQuery来完成吗?如果是这样,怎么办呢?

我已经在这个网站上尝试了一些建议,到目前为止还没有任何建议.

在此先感谢您的帮助!

Nat*_*lor 24

与Jeroen的解决方案类似,这里有一个更清洁,因为它不是替换无效输入,而是完全阻止它.

$('#nbr').on('keypress', function(ev) {
    var keyCode = window.event ? ev.keyCode : ev.which;
    //codes for 0-9
    if (keyCode < 48 || keyCode > 57) {
        //codes for backspace, delete, enter
        if (keyCode != 0 && keyCode != 8 && keyCode != 13 && !ev.ctrlKey) {
            ev.preventDefault();
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/PUQGQ/

  • 值得注意的是,用户仍然可以粘贴任何内容. (5认同)

Asc*_*iom 13

使用jQuery挂钩到textfield的keypress事件.在处理程序中,读取文本字段的值并使用正则表达式替换过滤掉您不想要的所有内容.

更新:未经测试的示例来说明:

jQuery("#myPhonefield").keypress(function(){
    var value = jQuery(this).val();
    value = value.replace(/[^0-9]+/g, '');
    jQuery(this).val(value);
});
Run Code Online (Sandbox Code Playgroud)

  • 此解决方案的问题是它仍然允许用户键入不允许的字符,即使它删除它.从用户的角度来看结果相当奇怪,因为他们看到他们输入的字符出现然后立即消失.最好完全阻止输入.请参阅下面的答案. (6认同)

Jos*_*ein 5

您可以按照Jeroen的建议使用jquery的按键; 但是,我建议不使用正则表达式.沿着这些方向的东西应该适合你:

$('#test').on('keypress', function(evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode;
    return !(charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57));
});
Run Code Online (Sandbox Code Playgroud)

现场演示

要处理粘贴,您可以对模糊或焦点执行正则表达式检查:

$('#test').on('focusout', function() {
    var value = $(this).val();

    $(this).val(value.replace(/[^0-9]/g, ''));
});
Run Code Online (Sandbox Code Playgroud)

现场演示