仅允许输入浮点数

我在输入时只有允许带有jquery库的浮点数时有痛苦的时间。 我的代码无法阻止chacacter“。” 当它成为第一个输入时,任何人都可以指导我解决这个问题吗?

$('.filterme').keypress(function(eve) { if ( ( eve.which != 46 || $(this).val().indexOf('.') != -1 ) && ( eve.which  57 ) || ( $(this).val().indexOf('.') == 0) ) { eve.preventDefault(); } });​ 

我使用jQuery Caret插件过滤第一个位置输入。 否则,一旦输入了点,检查它的位置已经很晚了。 我尝试检查点,然后删除点,但它看起来不太好。

jQuery插入符插件: http : //examplet.buss.hk/js/jquery.caret.min.js

我做了什么:

http://jsfiddle.net/FCWrE/422/

试试吧 :)

 $('.filterme').keypress(function(eve) { if ((eve.which != 46 || $(this).val().indexOf('.') != -1) && (eve.which < 48 || eve.which > 57) || (eve.which == 46 && $(this).caret().start == 0)) { eve.preventDefault(); } // this part is when left part of number is deleted and leaves a . in the leftmost position. For example, 33.25, then 33 is deleted $('.filterme').keyup(function(eve) { if ($(this).val().indexOf('.') == 0) { $(this).val($(this).val().substring(1)); } }); }); 
    

我用它 – 用于键盘输入或复制和粘贴

 $('input.float').on('input', function() { this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1'); }); 
   

正则表达也是我的建议。 如果值作为数字而不是字符串传递,则可以使用.toString将其更改为字符串并使用正则表达式对其进行validation。 例如:

 var str = value.toString(); if(!str.match(/^-?[0-9]*[.][0-9]+$/)) { alert("Value must be a float number"); return; } return value; 

如果传递的值是浮点数,则上述正则表达式将匹配。 它接受负数和正数。 如果你只想接受正数,只需删除’ – ?’ 从表达。 如果值只是零’0’而没有任何小数点,它也将失败。 如果你想接受零,只需将它作为条件添加到’if’语句中。

您可以使用上述validation和onchange事件来阻止用户输入非flot号码。

为什么不使用Regular Expression

 ^[0-9]*[.][0-9]+$ 

阅读代码并在此测试..

您可以使用以下方法,在onkeypress事件上调用。 下面是JS方法后跟的HTML代码段:

input type =“text” onkeypress =“return isNumberKey(event)”id =“floor”

 function isNumberKey(evt){ var charCode = (evt.which) ? evt.which : event.keyCode if (charCode == 46){ var inputValue = $("#floor").val(); var count = (inputValue.match(/'.'/g) || []).length; if(count<1){ if (inputValue.indexOf('.') < 1){ return true; } return false; }else{ return false; } } if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)){ return false; } return true; } 

注意 :上面的代码也确保您在输入中只输入一个小数。

这是我的解决方案,也适用于负数( 小提琴 )

 $("input").keypress(function (event) { var inputCode = event.which; var currentValue = $(this).val(); if (inputCode > 0 && (inputCode < 48 || inputCode > 57)) { if (inputCode == 46) { if (getCursorPosition(this) == 0 && currentValue.charAt(0) == '-') return false; if (currentValue.match(/[.]/)) return false; } else if (inputCode == 45) { if (currentValue.charAt(0) == '-') return false; if (getCursorPosition(this) != 0) return false; } else if (inputCode == 8) return true; else return false; } else if (inputCode > 0 && (inputCode >= 48 && inputCode <= 57)) { if (currentValue.charAt(0) == '-' && getCursorPosition(this) == 0) return false; } }); function getCursorPosition(element) { if (element.selectionStart) return element.selectionStart; else if (document.selection) { element.focus(); var r = document.selection.createRange(); if (r == null) return 0; var re = element.createTextRange(), rc = re.duplicate(); re.moveToBookmark(r.getBookmark()); rc.setEndPoint('EndToStart', re); return rc.text.length; } return 0; }