Tweet
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
- Newer: shino.Vicunaを修正しました
- Older: Vicuna(とNinjaスキン)を忍者ブログに移植してみた感想
Home > > Prototype.jsのField.presentメソッドは1.4以前と挙動が違う
Tweet
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
Home > > Prototype.jsのField.presentメソッドは1.4以前と挙動が違う
Home > JavaScript > Prototype.jsのField.presentメソッドは1.4以前と挙動が違う
Tweet
ネタがないのでだいぶ前に気になって調べたことをメモ。
prototype.jsには、
Field.present(element1, [element2, ..., elementN])
という、渡したフォーム要素の中に空白のものが残っていないかをチェックできるメソッドがあります。
いや、正確にはありました。
このメソッド、現在は
Field.present(element)
という単一の要素をチェックするものになっているようです。
つまり、以前と同じように使っちゃうと先頭の要素しかチェックされないのです。
以下ソースコードで検証。
(こういうの一度やってみたかった!)
present: function() {
for (var i = 0; i < arguments.length; i++)
if ($(arguments[i]).value == '') return false;
return true;
},
たしかに渡された要素全てについてチェックしています。
サンプル(by prototype.js ver 1.4.0 リファレンス)
present: function(element) {
return $(element).value != '';
},
こちらは単一の要素しかチェックしてません。
ので、期待した挙動にはなりません(prototype.js ver 1.5.0 リファレンス)。
最新版の1.6.0.2も同じでした。
Fieldのメソッドだから、意味的には今の方が正しいっぽいですね。(便利さは別として)
どうやらJavaScriptistで読み込まれてる1.5.0 rc0ぐらいまでは前者の処理だったようです。
Fieldのメソッドで複数の要素を処理するのはおかしいってことで修正されたんですかねぇ。
と、ダラダラ書いてきましたが、実は公式のドキュメントにはきちんと正しい挙動が書かれています。(おそらくバージョンアップ時にアナウンスもあったことでしょう)
やっぱり公式のドキュメントも見ようぜってことですかね。(整備されたのは1.5以降ですが…)
この他にも、返す結果が以前と変わってるメソッドがあるかもしれませんし。
以上、おそらく周知の事実なんでしょうが、日本語のリファレンスは昔のままのところが多いので一応書いてみました。
このメソッド自体あまり使われないかもしれませんが…。誰かのお役に立てれば幸いです。
まぁjQueryばっかりでprototypeはめったに使わないですけどねぇ。
最近は、Developers Summit 2008 の資料を公開します。 - IT戦記で(意外にも?)オススメされてたExt.JSを一度ちゃんと使ってみなきゃなぁ、とか思ってます。
Home > JavaScript > Prototype.jsのField.presentメソッドは1.4以前と挙動が違う