Prototype 1. 6.0とscript. aculo. us 1. 8.0
script.
新機能の部分が枯れるまではまだしばらくは1.
では,
$$() 関数
2621: function $$() {
2622: return Selector.findChildElements(document, $A(arguments));
2623: }
2621行目からは$$()関数です。
先ほどのSelector.
Form オブジェクト
2624: var Form = {
2625: reset: function(form) {
2626: $(form).reset();
2627: return form;
2628: },
2629:
2624行目からはFormオブジェクトです。reset(), serializeElements()しか定義されていませんが,
2625行目からのreset()は,
2630: serializeElements: function(elements, getHash) {
2631: var data = elements.inject({}, function(result, element) {
2632: if (!element.disabled && element.name) {
2633: var key = element.name, value = $(element).getValue();
2634: if (value != null) {
2635: if (key in result) {
2636: if (result[key].constructor != Array) result[key] = [result[key]];
2637: result[key].push(value);
2638: }
2639: else result[key] = value;
2640: }
2641: }
2642: return result;
2643: });
2644:
2645: return getHash ? data : Hash.toQueryString(data);
2646: }
2647: };
2648:
2630行目からはserializeElements() です。
渡された要素の配列を,
各フォーム要素の値を得るにはgetValue() (定義は Form.
最後に,
Form. Methods オブジェクト
2649: Form.Methods = {
2650: serialize: function(form, getHash) {
2651: return Form.serializeElements(Form.getElements(form), getHash);
2652: },
2653:
2649行目からはForm.
2650行目からはserialize()です。これは次のgetElements()を使って指定されたフォーム以下の入力要素の一覧を取得し,
2654: getElements: function(form) {
2655: return $A($(form).getElementsByTagName('*')).inject([],
2656: function(elements, child) {
2657: if (Form.Element.Serializers[child.tagName.toLowerCase()])
2658: elements.push(Element.extend(child));
2659: return elements;
2660: }
2661: );
2662: },
2663:
2654行目からはgetElements()です。
フォーム要素を渡すと,
2664: getInputs: function(form, typeName, name) {
2665: form = $(form);
2666: var inputs = form.getElementsByTagName('input');
2667:
2668: if (!typeName && !name) return $A(inputs).map(Element.extend);
2669:
2670: for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) {
2671: var input = inputs[i];
2672: if ((typeName && input.type != typeName) || (name && input.name != name))
2673: continue;
2674: matchingInputs.push(Element.extend(input));
2675: }
2676:
2677: return matchingInputs;
2678: },
2679:
2664行目からはgetInputs()です。
typeNameに'radio'などと指定して限定したり,
typeName, nameの両方とも指定されていなければ,
そうでなければ,