- ベストアンサー
evalの挙動について
- aspとJavaScriptを使って、ユーザが数値以外の値を入力した場合、エラーとしてそのコントロールにフォーカスを当てたいと思います。
- FormのOnSubmitでeval関数を使用して値を評価し、数値以外の場合にエラーを表示する方法を知りたいです。
- 詳しい方にお教えいただきたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
記述が間接的なのとスクリプトのみなので、よく理解できていてませんが、 多分、SetFocusが最初のエラーになっていて、次に、return falseが単独評価されるので、function内にないというエラーになると推測します。 eval("return false"); ではエラーになります。 eval("(function(){return false;})();"); なら一応動きますが… そもそもとして、なぜevalを介さなければならないのか理由がわからないのですが、単純にスクリプトで document.forms["form06"].elements["SelRoom"+ArrayRoomId[nCnt]].focus(); とかではダメなのでしょうか? また、全体が不明なのでよくわかりませんが、順に数値のチェックを行なうだけなら、わざわざ配列で名前を定義しなくてもいけそうな気がします。 (function内でArrayRoomIdを定義しているので、他では使っていないと推測しましたが…) 例えば、全ての要素の処理が同じならチェックをループするだけでよいですし、入力の種類が混在するのなら、classにnumberと設定されている要素だけ数値入力のチェックをするとかの考え方でもよさそうです。 もっと別の考えをするなら、入力中に(blurなどで)リアルタイムにチェックをするといった方法もありそうな気がします。
その他の回答 (1)
- lupin-333333
- ベストアンサー率31% (294/933)
ちょこっとだけ見ると、クライアントサイドで実行される部分を示していますよね? それって、クライアント側のブラウザに依存します。 分かっています? て、事は、ブラウザとかの情報が必要ですね・・・・ 何も記載されていようなようですが・・・・ ヘッダー部分とか、ブラウザ名とかバージョンとか、だいたいJavaScript のバージョンは幾つでコーディングしたのでしょうか? そこに依存します。
お礼
document.forms["form06"].elements["SelRoom"+ArrayRoomId[nCnt]].focus(); で思い通りのことができました。 ありがとうございます。