日々のアンテナ

日々アンテナを貼って、いろんな情報をキャッチ、発信したいと思います。
2017年10月 ≪  123456789101112131415161718192021222324252627282930 ≫ 2017年12月
TOPjavascript ≫ form部品の初期値を取得する

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部品にアクセスしたいときによく使っています。 もっと良い方法があれば教えてくださいね。

Comment













非公開コメントにする
Trackback

Trackback URL