JavaScript parseInt 错误
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
}
您需要清除输入的值,否则不会显示占位符。
if (parseInt(form.width.value) < 0) {
$('#width')
.attr('placeholder', 'Please input the desired width of the table.')
.val('');
}
您真的会想要根据 string/value 为 parseInt
设置基数(第二个参数),它可以解释为八位字节、二进制、十六进制等。
所以让它成为 if (form.width.value && parseInt(form.width.value,10)>0){...}
。
提醒一句,不要想当然地使用 parseInt。之前的回答中已经提到过,但我会详细说明一下:
这里是 parseInt 的简短但更详细的定义:
The parseInt(string, radix) function parses a string and returns an integer.
radix 参数(作为整数)用于指定要使用的数字系统(例如二进制、三进制、八进制、十进制、十六进制等)。
如果省略 radix 参数,JavaScript 假设如下:
- 如果字符串以“0x”开头,则基数为 16(十六进制)
- 如果字符串以“0”开头,则基数为 8(八进制)。这个功能是
弃用 如果字符串以任何其他值开头,则基数为 10
(十进制)
只有字符串中的第一个数字是 returned!
如果第一个字符无法转换为数字,parseInt() returns NaN。但是,如果可以,它将 return 一个数字。有时这不是您所期望的!
由于 ECMAScript 的旧版本,较旧的浏览器将导致 parseInt("010") 为 8,(比 ECMAScript 5 更旧,当字符串以“0”开头时,默认使用八进制基数 (8)。从 ECMAScript 5 开始,默认值为十进制基数 (10)。
所以简而言之 - 确保你传递的参数被消毒为以 10 为底的十进制数(我认为你不想要 12,3 作为你的宽度)或者更好地确保它符合你的条件:
if ( !isNan(form.with.value) && parseInt(form.width.value, 10) > 0 )
我有一个带有几个输入字段的 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
}
您需要清除输入的值,否则不会显示占位符。
if (parseInt(form.width.value) < 0) {
$('#width')
.attr('placeholder', 'Please input the desired width of the table.')
.val('');
}
您真的会想要根据 string/value 为 parseInt
设置基数(第二个参数),它可以解释为八位字节、二进制、十六进制等。
所以让它成为 if (form.width.value && parseInt(form.width.value,10)>0){...}
。
提醒一句,不要想当然地使用 parseInt。之前的回答中已经提到过,但我会详细说明一下:
这里是 parseInt 的简短但更详细的定义:
The parseInt(string, radix) function parses a string and returns an integer.
radix 参数(作为整数)用于指定要使用的数字系统(例如二进制、三进制、八进制、十进制、十六进制等)。
如果省略 radix 参数,JavaScript 假设如下:
- 如果字符串以“0x”开头,则基数为 16(十六进制)
- 如果字符串以“0”开头,则基数为 8(八进制)。这个功能是 弃用 如果字符串以任何其他值开头,则基数为 10 (十进制)
只有字符串中的第一个数字是 returned!
如果第一个字符无法转换为数字,parseInt() returns NaN。但是,如果可以,它将 return 一个数字。有时这不是您所期望的!
由于 ECMAScript 的旧版本,较旧的浏览器将导致 parseInt("010") 为 8,(比 ECMAScript 5 更旧,当字符串以“0”开头时,默认使用八进制基数 (8)。从 ECMAScript 5 开始,默认值为十进制基数 (10)。
所以简而言之 - 确保你传递的参数被消毒为以 10 为底的十进制数(我认为你不想要 12,3 作为你的宽度)或者更好地确保它符合你的条件:
if ( !isNan(form.with.value) && parseInt(form.width.value, 10) > 0 )