我尝试从文本框向validate integer values
创建一个javascript函数。验证它的最佳方法是什么,只有integer and float
值可以接受?
用于数字验证的必需java脚本函数。
答案 0 :(得分:6)
// remove whitespaces
var input = input.replace(/\s+/g,"");
// check if the input is a valid number
if(isFinite(input) && input != ''){
// do your thing
}
请记住,isFinite只接受像'20 .50'这样的值而不是'20,50',这在某些国家/地区是自定义的。如果您需要这种灵活性,则需要进行额外的字符串预处理。使用此解决方案,只允许空格为千位分隔符(例如“100 000”)。
不幸的是,检查空字符串是必要的,因为isFinite('')返回true。
您也可以使用用户CMS中的此功能(有关详细说明,请参阅:Validate decimal numbers in JavaScript - IsNumeric())
function isNumber(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
答案 1 :(得分:1)
JavaScript有一个内置函数,isNaN(text)。只需将文本框的文本传递给此函数即可获得布尔结果。
答案 2 :(得分:1)
我在javascript中进行数字验证的最佳解决方案。
function isFloat(evt) {
var charCode = (event.which) ? event.which : event.keyCode;
if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)) {
alert('Please enter only no or float value');
return false;
}
else {
//if dot sign entered more than once then don't allow to enter dot sign again. 46 is the code for dot sign
var parts = evt.srcElement.value.split('.');
if (parts.length > 1 && charCode == 46)
{
return false;
}
return true;
}
}
只需复制并过去javascript代码,然后像这样应用到你的文本框onkeypress ..
<input type="text" onkeypress="return isFloat(event)" />
答案 3 :(得分:1)
onload =function(){
var ele = document.querySelectorAll('.number-only')[0];
ele.onkeypress = function(e) {
if(isNaN(this.value+""+String.fromCharCode(e.charCode)))
return false;
}
ele.onpaste = function(e){
e.preventDefault();
}
}
<input class="number-only" type=text />
答案 4 :(得分:0)
var valid =!isNaN(value); 例如:
!isNaN('0'); // true
!isNaN('34.56'); // true
!isNaN('.34'); // true
!isNaN('-34'); // true
!isNaN('foo'); // false
!isNaN('08'); // true
!isNaN(''), !isNaN(' '), !isNaN('\n\t')
等都是真的!
空白测试+ isNaN FTW:
var valid = !/^\s*$/.test(value) && !isNaN(value);