我在很多例子中用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之类的金额。 Edit2:抱歉,num确实是form.spend.value。
答案 0 :(得分:1)
检查此代码,其工作情况。
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();">
答案 1 :(得分:1)
因为这不是处理数字的正确方法。
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 字符串,不会抛出任何错误,您将看到警告。
就像James McLaughlin指出的那样,你应该使用适当的函数来处理数字。
顺便说一下,正确编写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');
}
答案 2 :(得分:0)
如果我输入abc作为输入,则不显示警报我不是数字。如果我输入带有引号的“abc”,它会显示警告。
这是因为脚本错误并在到达警报之前死亡。
> var form = { spend: { value: 'abc' } };
> spend=eval(form.spend.value);
ReferenceError: abc is not defined
如果值周围有引号(即'"abc"'
),那么它将被评估为字符串文字而不是变量。
您不应该将eval
置于用户输入附近。只需删除该行。