为什么只有当我在字符串周围输入引号时,表单输入的isNaN才为true
Why does isNaN for form input true for a string only if I enter quotes around it?
我在JavaScript中看到了很多例子,但我无法让它为我工作。我一定忽略了一些东西,所以我很感激有一个善良的灵魂在这里帮助我,因为我是JavaScript的新手:
spend=eval(form.spend.value);
if(isNaN(form.spend.value)) {
alert('I am not a number');
}
以上表格输入来自:
<input type=text name=spend value="" size=6 STYLE="background-color: #EDEDE8;">
如果我输入abc作为输入,则不会显示"我不是数字"的警告。如果我输入带引号的"abc",它确实会显示警报。
我正在检查表单中的输入,其中用户应该只被允许输入数字。只能接受数字。非常感谢。
编辑:支出是美元金额。因此,它需要能够接受123.45这样的金额。第2版:对不起,num确实是form.spend.value.
检查这段代码,它正在工作
js:
function abc(){
var aa = document.getElementById('myid').value;
if(isNaN(aa)) {
alert('I am not a number');
}
}
表单:
<input type=text name=spend value="" id="myid" size=6 STYLE="background-color: #EDEDE8;">
<input type="button" onClick="abc();">
因为这不是处理数字的正确方法。
spend=eval(form.spend.value); // Problem is on this line
if(isNaN(form.spend.value)) {
alert('I am not a number');
}
如果有人在form.spend.value
中输入了一些内容,例如alert("foolish")
,你会惊讶地看到它正在执行,例如eval("alert('"foolish'")")
如果它类似于this_is_an_undefined_variable_name
,它会抛出一个错误并终止脚本,这就是为什么您看不到警报的原因。
如果它类似于"hihi"
,因为这是一个有效的JavaScript字符串,则没有抛出错误,您将看到警报。
正如詹姆斯·麦克劳林所指出的,你应该使用适当的函数来处理一个数字。
顺便说一下,正确编写HTML应该更好(引用属性):
<input type="text" name="spend" id="spend" value="" size="6" STYLE="background-color: #EDEDE8;">
并使用更好的方式检索表单(使用document.getElementsByName
也可以):
spend=parseFloat(document.getElementById("spend").value);
// OR
spend=parseFloat(document.getElementsByName("spend")[0].value);
if(isNaN(spend)) {
alert('I am not a number');
}
如果我输入abc作为输入,则不会显示"我不是数字"的警告。如果我输入带引号的"abc",它确实会显示警报。
这是因为脚本在到达警报之前出错并死亡。
> var form = { spend: { value: 'abc' } };
> spend=eval(form.spend.value);
ReferenceError: abc is not defined
如果该值周围有引号(即'"abc"'
),那么它将被计算为字符串文字,而不是变量。
您不应该将eval
放在用户输入附近的任何位置。只要去掉那条线。
- Nodejs服务器在解析之前生成输入表单
- 如何创建打开警报框的输入表单
- JavaScript onChange 事件侦听器对输入表单不起作用
- 如何在 OnKeyPress 事件后获取输入表单元素的值
- 单输入表单 - 特殊情况 |停止表单提交
- 需要输入表单验证
- 如何在谷歌图表中使用输入表单值
- 使用jquery可交换地更改两个html输入表单值
- 当从jqueryajax调用输入表单时,它不起作用
- 控制器作为搜索输入表单的语法
- 删除带有按钮的输入表单失败
- 验证带有2个小数点的浮点形式的输入表单
- AngularJS:输入表单在分部中不起作用
- 如何从php中的输入表单调用Javascript函数,以更改HTML
- 输入表单中的Sharepoint javascript
- 当点击输入表单时,为Raphael制作的对象添加光晕
- 当用户将数据输入表单时要知道的事件
- 保存输入表单后ImageMap颜色更改
- 链接输入表单中的填充脚本
- 有关多个输入表单验证的问题