繁体   English   中英

JavaScript parseInt错误

[英]JavaScript parseInt-error

我有一个带有几个输入字段的HTML表单,我想检查用户是否在文本字段中输入了数字而不是字符串。 我尝试了这个:

if(parseInt(form.width.value) < 0) {
    $("#width").attr('placeholder', 'Please input the desired width of the table.');
}

我尝试使用负数,正数,文本,但没有任何反应。 但是无论我如何尝试, if语句中的代码都不会执行。 我只想检查用户是否输入了正整数。

您确实会想根据字符串/值将parseInt的基数(第二个参数)设置为,可以解释为八位字节,二进制,十六进制等。

因此,使其成为if (form.width.value && parseInt(form.width.value,10)>0){...}

要检查值是否为数字,请使用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('');
}

请注意,不要将parseInt视为理所当然。 之前在答案中已经提到过,但我将对其进行详细说明:

这是parseInt的简短但更详细的定义:

parseInt( string ,radix)函数解析一个字符串并返回一个整数。

基数参数(作为整数)用于指定要使用的数字系统(例如,二进制,三进制,八进制,十进制,十六进制等)。

如果省略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 )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM