• ベストアンサー

二つのテキストフォームの値に応じ、不正が疑われる場合はアラートを出したい

次のような二つのテキストボックスがあります。 <form name="form1"> 走行距離<input type="text" name="sou1"> 給油量<input type="text" name="kyu1"> </form> 入力された値に応じ、onblurなどフォーカスを失った時に 次の軽いアラートを出したいですが、記述方法をご教示下さい。 if (走行距離÷給油量 > 20)  alert ("燃費に換算すると■km/Lと、かなり大きいですがよろしいですか? OK") elseif (走行距離÷給油量 < 1 ) ==> alert ("燃費に換算すると■km/Lと、かなり小さいですがよろしいですか? OK") elseif (走行距離=給油量) ==> alert ("走行距離と給油量が同じ値ですが誤っていませんか? OK")

質問者が選んだベストアンサー

  • ベストアンサー
  • Nii
  • ベストアンサー率48% (79/162)
回答No.2

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=S-JIS"> <script language="JavaScript" type="text/JavaScript"> <!-- function Check() { if (!document.form1.sou1.value) { alert("走行距離を記入してください。"); document.form1.sou1.focus(); return 1; } if (!document.form1.kyu1.value) { alert("給油量を記入してください。"); document.form1.kyu1.focus(); return 1; } var kyu = document.form1.kyu1.value; var sou = document.form1.sou1.value; if( sou.match( /[^0-9]+/ ) ) { alert("走行距離が正しく入力されていません。"); document.form1.sou1.focus(); return 1; } if( kyu.match( /[^0-9]+/ ) ) { alert("給油量が正しく入力されていません。"); document.form1.kyu1.focus(); return 1; } var nenpi = sou / kyu; if( nenpi > 20 ) { alert ("燃費に換算すると" + nenpi + "km/Lと、かなり大きいですがよろしいですか? OK"); return 1; } if( nenpi < 1 ) { alert ("燃費に換算すると" + nenpi + "km/Lと、かなり小さいですがよろしいですか? OK"); return 1; } if( sou == kyu ) { alert ("走行距離と給油量が同じ値ですが誤っていませんか? OK"); return 1; } return 0; } //--> </script> </head> <body> <form name="form1"> 走行距離<input name="sou1" onblur="Check();"><br> 給油量<input name="kyu1" onblur="Check();"><br> <input type="submit" value="確認" onclick="return Check();"> <input type="reset" value="リセット" onclick="return init();"> </form> </body>

litton101
質問者

お礼

Niiさん、実装までしていただきありがとうございました。 未入力のときとかもAlertがでるように していただけたのですね。 実は、数字以外が入力されたり未入力のとき にも警告して欲しかったので、 大変参考になりました。 というか、ほとんどこのまま実装させていただけそうです。 ほんとにありがとうございました。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

document.form1.sou1.value の様にして入力された文字列を取り出せます。 range = eval(document.form1.sou1.value); のようにして文字列を数値に変換できます。 (eval の代わりにparseInt あるいは parseFloat が使えます、それぞれ文字列を、整数,小数に変換します) ÷ は、javascript では、/ を使います。 = は、この場合javascript では、== を使います。

litton101
質問者

お礼

BLUEPIXYさん、大変わかりやすい解説ありがとうございました。 document.form1.sou1.value こういう書き方(オブジェクト指向?) というのがいまいちよくわかりませんでしたが おかげさまで勉強になりました。 ありがとうございました。

関連するQ&A