« フォームメールの改良(1) | トップページ | Tooのセミナーが蒼鋼だった »

フォームメールの改良(2)

 さて、javascript内のfunctionの方では、基本的に、

    if(document.form.name.value == ""){
      alert("氏名が入力されていません。");
      return false;
    }
    
 みたいなのをelse ifでつないで行くのですが("form","name"は任意)、ラジオボタンのvalueも同じように、
 
    if(document.form.seibetsu.value == "男")
    
 とすると、なぜかエラーとなってしまいました。
 しばらく右往左往するも、どうもラジオボタンのvalueはテキストフィールドのようにはjavascript側に伝わらないようです。 この辺り、はっきりとそう書いてある記事には出会えず、対処法のみがいくつか見つかったのみです。(あまりに初歩の段階故かもしれません)
 ということで、まずは変数を一個作って下記のようにしてみました。

    var vSeibetsu = document.getElementsByName("seibetsu");
    }else if(vSeibetsu[0].checked){
    
 すると、仮にボタンの最初のvalueが"男"であれば、上記エラーになったif文に期待した結果を得ることができました。 ただし、この場合"男"という値が判断されたのではなく、単に最初のボタンが選択されていることが判断されています。

 ここに至るまでの検索の結果、getElementsByNameのElementsが複数形になっていることがポイントらしく、要はこれで得られるvalueは配列になるということです。
 だから最初は、

    if(document.form.vSeibetsu[0].value == "男")

 として一見うまく行ったように見えたんだけど、これと対になる、
 
    if(document.form.vSeibetsu[1].value == "女")
    
 を、機能させようとしても、上の"男"判断も常にtrueになりっぱなしなので結局機能せず、つまりは同じ名前(seibetsu)のボタンである限り、そのvalueは常に配列[0][1]...に同時に代入されることも分かりました。 これでは条件分岐の鍵に使えません。
 ということで、上のcheckedを付けて「どの配列の値が選択されているか」を判断するようにしたわけです。
 このchecked、通常はデフォルトで選択されるボタンを指定するためにchecked="checked"とよく使用するのですが、こうして選択状態を調べるためにも利用できるとは知りませんでした。
 
 まぁ、かのようにお恥ずかしい状態ですが、とにかくこれでフォームメール関係の手直しは終了。 あとは途中、あえて無視した複数の文字コードの混在対策と、新たなデータとの照合部分を書き加えて...
 あああ、6月が終わってしまう...

|

« フォームメールの改良(1) | トップページ | Tooのセミナーが蒼鋼だった »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« フォームメールの改良(1) | トップページ | Tooのセミナーが蒼鋼だった »