我有一个带有几个输入字段的HTML表单,我想检查用户是否在文本字段中输入数字,而不是字符串。我试过这个:
if(parseInt(form.width.value) < 0) {
$("#width").attr('placeholder', 'Please input the desired width of the table.');
}
我尝试使用负数,正数,文本,但没有任何事情发生。但无论我尝试什么,if
语句中的代码都不会被执行。我只想检查用户是否输入了正整数。
答案 0 :(得分:1)
你真的想要为parseInt
设置基数(第二个参数)取决于字符串/值,它可以解释为八位字节,二进制,十六进制等。
所以转到if (form.width.value && parseInt(form.width.value,10)>0){...}
。
答案 1 :(得分:0)
要检查值是否为数字,请使用isNaN
:
if(!isNaN(form.width.value) && parseInt(form.width.value) > 0) {
// form.width.value is a number bigger than 0
}
答案 2 :(得分:0)
您需要清除输入的值,否则不会显示占位符。
if (parseInt(form.width.value) < 0) {
$('#width')
.attr('placeholder', 'Please input the desired width of the table.')
.val('');
}
答案 3 :(得分:0)
请注意,不要将parseInt视为理所当然。之前已经在答案中提到过,但我会详细说明一下:
以下是parseInt的简短但更详细的定义:
parseInt( string ,radix)函数解析字符串并返回一个整数。
基数参数(作为整数)用于指定要使用的数字系统(例如二进制,三进制,八进制,十进制,十六进制等)。
如果省略radix参数, JavaScript假设以下:
只返回字符串中的第一个数字!
如果第一个字符无法转换为数字,则parseInt()返回NaN。但是,如果它可以,它将返回一个数字。有时这不是你所期望的!
较旧的浏览器将导致parseInt(&#34; 010&#34;)为8,因为ECMAScript的旧版本(早于ECMAScript 5,当字符串以&开头时使用八进制基数(8)作为默认值) #34; 0&#34;。从ECMAScript 5开始,默认为十进制基数(10)。
所以简而言之 - 确保你传递的参数被消毒为基数10十进制数(我认为你不想要12,3作为你的宽度)或甚至更好地确保它在你的状态:
if ( !isNan(form.with.value) && parseInt(form.width.value, 10) > 0 )