-->

使用Javascript / jQuery的确认按键时小数输入/ KEYDOWN(Javascrip

2019-09-23 05:24发布

我试图找到一种方法来验证在按键的文本输入,我想只允许在我的文字输入包括小数号码。

我正在使用jQuery.keydown的方法,并检查什么,关键是和使用event.preventDefault()如果该键允许列表中没有。 但是从那以后我读过键不是整个浏览器一致,我也担心不同的操作系统。

我已经遇到了这个问题,但我不精通正则表达式并不能肯定这是否会适合我的需要: jQuery的-按键上的字符验证?

有了这个方法,它预计00.00将停止,因为在关键了正则表达式进行检查时,00时键入的用户正则表达式。

谢谢

Answer 1:

你不应该依赖于关键事件,因为这将意味着如果用户不确认,将不能右击- >与无效字符粘贴

你应该不是做的是使用类似zurb的textchanged事件-这将准确,无论触发输入模式(键,粘贴,拖放,等等)

http://www.zurb.com/playground/jquery-text-change-custom-event

里面的textchanged处理程序,你可以在适当的正则表达式来处理小数。



Answer 2:

如果你想限制输入(与验证),你可以用关键事件工作。 是这样的:

<input type="text" class="numbersOnly" value="" />

和:

jQuery('.numbersOnly').keyup(function () { 
    this.value = this.value.replace(/[^0-9\.]/g,'');
});

或者 ,在用户已经“左”领域,与上改变事件,这样,用户仍然可以通过使用箭头键文本浏览,我们可以更新此。

jQuery('.numbersOnly').on('change', function () { 
    this.value = this.value.replace(/[^0-9\.]/g,'');
});

这立即让用户知道,在验证阶段,他们不能进入字母字符等,而不是以后。

您仍需要验证,因为输入可能会被切割并用鼠标或可能由形式autocompleter可能不会触发关键事件粘贴填写。

小提琴: http://jsfiddle.net/shannonhochkins/eu7P9/



Answer 3:

我已经使用e.which验证十进制数

$(document).ready(function () { 
    var isEnable=true;
$(".only-number-period").live('keydown', function (e) {
    //isEnable = (e.which != 110) ? false : true;
        if( ((e.which == 9) || (e.which == 46) || (e.which == 8) || (e.which == 110) || (e.which >= 48 && e.which <= 57) || (e.which >= 96 && e.which <= 105))){
            if(isEnable ==false && e.which ==110){return false;}
        }else{
        return false
        }  
    if (isEnable == true) {            
    isEnable=(e.which ==110)?false:true;
        }
    });
});​

链接:: HTTP://jsfiddle.net/rTr2w/



Answer 4:

用香的回答,我提供了以下简单的JS代码:

jQuery('.numbersOnly').keyup(function () {
    if(($(this).val().split(".")[0]).indexOf("00")>-1){
        $(this).val($(this).val().replace("00","0"));
    } else {
        $(this).val($(this).val().replace(/[^0-9\.]/g,''));
    }
});

看到这个动作: http://jsfiddle.net/SnakeEyes/eu7P9/2/

更新为避免多次. 符号,使用下面的代码:

jQuery('.numbersOnly').keyup(function (e) {
    if(($(this).val().split(".")[0]).indexOf("00")>-1){
        $(this).val($(this).val().replace("00","0"));
    } else {
        $(this).val($(this).val().replace(/[^0-9\.]/g,''));
    }

    if($(this).val().split(".")[2] != null || ($(this).val().split(".")[2]).length ){
        $(this).val($(this).val().substring(0, $(this).val().lastIndexOf(".")));
    }   
});

例如: http://jsfiddle.net/SnakeEyes/eu7P9/3/



文章来源: Javascript/Jquery validating decimal input on keypress/keydown