バリデーションについて。
規模がそこそこあったり、似てるけど微妙に条件が違ったりするとif文が増えてしまいます。
そこで一つの実装方法を紹介。
<form id="root">
<input type="text" data-minValue="10" />
</form>
<script>
function validation(){
var root = $('#root[input]');
for(var i = 0; i < root.length; i++){
var el = $(root[i]).attr('data-minValue');
if(!minValue(el){
alert("minValueValidation");
}
}
}
function minValue(value , min){
if(value < min){
return false;
}
return true;
}
</script>
単純に書くとこんな感じ
バリデーションをかけたい範囲にrootというIDをつけてその中の属性を見て、値がdata-minValueより小さかったらアラート出してます。
(実行してないのでちゃんとできてるかわかりませんが)
IDやクラスに特定の名前つけてやってもいいんですが、それは以前から普通にやってた?んじゃないかと思ったのでdata属性とjQueryを生かした書き方をしてみました。
で、
var el = $('#root');
という書き方なんですが。
某上司から「この書き方だとDOM要素の参照は最初だけで済むんだよね~」
と聞いたことがありまして。
ずっとそうなんだと思ってたんですが、ふとオブジェクト型は参照渡しだよな・・・と気づきました
というか、このelを変更すればDOMも変わるので絶対そうじゃん・・・とか思って気持ちげんなりしました^^;
職場で連想配列を使ってたんですが、とりあえず入れなおせばいいやと思ってfor文で詰めなおしたりしてましたが
このやり方は変だ^^
と思ったので調べてみたらjQueryのextendを使えば簡単なようです。
var object = {test : true , hoge : false};
var work = $.extend(true , {} , object};
簡単ですね!
まあ職場ではjQuery使ってないので(禁止されてる)別の方法を使わないといけないっすね