こんな場合はこの記事を見てね!
そのものずばり!の内容じゃなくてもヒントになるはずです♪
ファイルをアップロードしようと思ったら「アクセスが拒否されました」
ウインドウをリサイズ、移動しようとしたら「アクセスが拒否されました」
form部品の初期値を取得したい、初期値に戻したい
form部品すべてにアクセスしたい
配列の値を削除したい
配列の値を並び替えたい
javascriptでtry-catch!
IEでclass名を取得したい
IEでonclick属性をセットしたい

2006年10月17日

form部品の初期値を取得する

たとえばテキストボックスの値を変更した場合のみ入力チェックを行うとか、初期値と比較して処理を行うことって多いと思います。

初期値を取得するには、default○○を使います。
Form部品の種類によって使えるプロパティが違います。
input type="text",textareaの場合 defaultValue
optionの場合 defaultSelected
input type="checkbox"の場合 defaultChecked


例:もしテキストボックスの初期値から変更があった場合はアラートを表示する。

var obj = document.myform.mytext;
if(obj.value != obj.defaultValue){
 alert("変更されました。");
}

これ、一個や二個ならいいのですが、たとえばformのelements全てに対して初期値から変更があったかどうかをチェックするには、下のような方法が便利だと思います。

function initValue(target){
 var childs = target.childNodes;
 var flg = false;
 if(childs.length != 0){
  for(var i=0;i<childs.length;i++){
   if(childs(i).tagName == "INPUT" && childs(i).getAttribute("type") == "text"){
    if(childs(i).value != childs(i).defaultValue){
    flg = true;
    }
   }
   if(childs(i).tagName == "TEXTAREA"){
    if(childs(i).value != childs(i).defaultValue){
    flg = true;
    }
   }
   if(childs(i).tagName == "OPTION"){
    if(childs(i).selected != childs(i).defaultSelected){
    flg = true;
    }
   }
   if(childs(i).tagName == "INPUT" && childs(i).getAttribute("type") == "checkbox"){
    if(childs(i).checked != childs(i).defaultChecked){
    flg = true;
    }
   }
   var nextChilds = childs(i).childNodes;
   if(nextChilds.length != 0){
    initValue(childs(i));
   }
  }
 }
return flg;
}
引数のtargetには対象となるformを指定します。
webアプリだとやたらと大量のform部品を生成することが良くあります。
この方法、初期値との比較以外にも全てのform部品にアクセスしたいときによく使っています。

もっと良い方法があれば教えてくださいね。

ちょっと使えるぞ♪と思ったらクリックして頂くと励みになります。ビジネスブログ100選
posted by junko at 19:34 | Comment(0) | TrackBack(0) | Form Elements
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。