プログラミング: 2009年4月アーカイブ

実は、JavaScript はよく知らないので、簡単なことでも引っかかってしまう。

今日も、

<form method="post" action="hogehoge.cgi" name="form1" onSubmit="return check();">
【性別】<br>
<input name="性別" type="radio" value="男性">男性 <br>
<input name="性別" type="radio" value="女性">女性 <br>

こういうラジオボタンの選択状況をチェックする Script を書いた。
ボタンが選択されるまでは value 値もセットされないわけだから、

if (document.form1.性別.value.length == 0) {
    alert('性別を選択してください。');
    return false;
}

なんて感じでええんかな・・・と思ってたら、大間違い。

InternetExplorer7 は実行エラーを出すけど(ま、内容はわかりづらいけどね(^^;)、FireFox3 は何のエラーも出さずに、移行の処理をキャンセルして終わるだけ(hogehoge.cgi が submit される)。

正しくは、

if ((document.form1.性別[0].checked == "") && (document.form1.性別[1].checked == "")) {
    alert('性別を選択してください。');
    return false;
}

こう、書かないと。

JavaScript が世に出てきたときは、まあ、セキュリティの面から見ても、今後もお遊び程度のオブジェクトの制御に使われるくらいだろうと、よもやこんなに JavaScript でがりがり処理を書く時代がくるなんて思いもしなかった。
なもんで当時全然覚える気がなくて、今頃になって色々勉強しているというわけだ。とほほ。

ま、JavaScript というよりも、オブジェクト指向言語全体を苦手としてるんだけどな。あいたたた・・・