1

これは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を入力すると、番号ではないというアラートが表示されません。isを引用符で囲んで「abc」と入力すると、アラートが表示されます。

ユーザーが数字の入力のみを許可されるべきフォームからの入力をチェックしています。数字のみを受け入れる必要があります。ありがとうございました!

編集:支出は米ドルの金額です。したがって、123.45などの金額を受け入れることができる必要があります。Edit2:申し訳ありませんが、numは確かにform.spend.valueです。

4

3 に答える 3

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();">
于 2012-07-31T09:24:32.980 に答える
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');
}
于 2012-07-31T09:25:31.327 に答える
0

入力として abc を入力すると、アラート I am not a number が表示されません。引用符で囲んで「abc」と入力すると、アラートが表示されます。

これは、アラートに到達する前にスクリプトがエラーになり、停止するためです。

> var form = { spend: { value: 'abc' } };
>  spend=eval(form.spend.value);
ReferenceError: abc is not defined

値が引用符で囲まれている場合 (つまり'"abc"')、変数ではなく文字列リテラルとして評価されます。

evalユーザー入力の近くに置くべきではありません。その行を削除するだけです。

于 2012-07-31T09:19:14.917 に答える