JavaScript parseInt-error
JavaScript parseInt-error
我有一个带有几个输入字段的HTML表单,我想检查用户是否在文本字段中输入了一个数字,而不是一个字符串。我试过这个:
if(parseInt(form.width.value) < 0) {
$("#width").attr('placeholder', 'Please input the desired width of the table.');
}
我尝试过负数,正数,文本,但没有任何反应。但无论我尝试什么,if
语句中的代码都不会被执行。我只想检查用户是否输入了一个正整数。
要检查值是否为数字,请使用 isNaN
:
if(!isNaN(form.width.value) && parseInt(form.width.value) > 0) {
// form.width.value is a number bigger than 0
}
您真的会想要为parseInt
设置基数(第二个参数),因为根据字符串/值,它可以被解释为八进制、二进制、十六进制等。
所以把它带到一个if (form.width.value && parseInt(form.width.value,10)>0){...}
.
请注意,不要认为parseInt是理所当然的。之前在回答中已经提到过,但我会更详细地阐述它:
以下是 parseInt 的简短但更详细的定义:
parseInt(string, radix) 函数分析一个字符串并返回一个整数。
基数参数(作为整数)用于指定要使用的数字系统(例如二进制、三元、八进制、十进制、十六进制等)。
如果省略基数参数,JavaScript 将假定以下内容:
- 如果字符串以"0x"开头,则基数为 16(十六进制)
- 如果字符串以"0"开头,则基数为 8(八进制)。此功能是已弃用 如果字符串以任何其他值开头,则基数为 10(十进制)
仅返回字符串中的第一个数字!
如果第一个字符无法转换为数字,parseInt() 返回 NaN。但是,如果可以,它将返回一个数字。有时这不是您所期望的!
较旧的浏览器将导致 parseInt("010") 为 8,因为旧版本的 ECMAScript(比 ECMAScript 5 旧,当字符串以"0"开头时,使用八进制基数 (8) 作为默认值。从 ECMAScript 5 开始,缺省值是十进制基数 (10)。
所以简而言之 - 确保您传递的参数被灭菌为基数 10 十进制数(我认为您不想将 12,3 作为宽度),甚至更好地确保它处于您的状态,例如:
if ( !isNan(form.with.value) && parseInt(form.width.value, 10) > 0 )
您需要清除输入的值,否则不会显示占位符。
if (parseInt(form.width.value) < 0) {
$('#width')
.attr('placeholder', 'Please input the desired width of the table.')
.val('');
}
- jQuery Error adadvisor.net
- 关于 Javascript 中 parseInt() 的说明
- Ajax调用ERror Cross Origin REquest:在rails中自动完成大学列表
- 类型error primeFactors.for不是函数
- 为什么这是真的:parseInt(1111111111111,2)===parseInt(111111111111,2)
- jquery中出现NaN错误.已经尝试过ParseInt,但仍然不起作用
- parseInt("08") returns 0
- parseInt()方法如何返回整数
- Array.every返回false,而不是类型error
- datatables.net ajax error - http://datatables.net/tn/7
- Error: timers.js:234 callback.apply(timer, args);
- parseInt的行为很奇怪——可能吧
- 滚动到错误字段ERROR
- Error with xmlhttpresponse
- JS parseInt带逗号的字符串
- ajax javascript 500 error
- 将数据从ExpressJS发送到AngularJS ERROR json
- walkscore API JSON error
- JavaScript parseInt-error
- Javascript parseInt error