スライダーを操作することで数値が設定されます。他方で数値を入力すると、スライダーが移動します。
スライダーを描画するための要素を用意し、そこにid属性を設定します。
またスライダーはスタイルシートで画像として設定されるため、スライダーを内包する要素のクラスに「yui3-skin-sam」を指定します。Skinning - Slider
<div class="yui3-skin-sam"> <input id="text"/> <!-- 数値テキストの要素 --> <span id="slider"></span> <!-- スライダーの要素 --> </div>
var SLIDER_ID = '#slider'; var TEXT_ID = '#text'; // スライダー モジュールを読み込み、読み込み完了後に関数を実行する YUI().use( 'slider', function( Y ) { // スライダーを更新する function UpdateSlider( e ) { var data = this.getData(); if( data.timer ) { // タイマーが有効な状態ならば、それをキャンセルする data.timer.cancel(); } // スライダーの値を10進数で取得する var value = parseInt( this.get( 'value' ), 10 ); if( !isNaN( value ) ) { // キー入力を待つために、関数を遅延実行する data.timer = Y.later( 200, // 遅延時間 [ms] data.slider, // 関数に渡すオブジェクト function() { // タイマーを無効にする data.timer = null; // スライダーの値を設定する this.set( 'value', value ); } ); } } // 数値テキストを更新する function UpdateText( e ) { this.set( 'value', e.newVal ); } // 既定値でスライダーを作成する var xSlider = new Y.Slider(); xSlider.set( 'min', -100 ); // スライダーの最小値 xSlider.set( 'max', +100 ); // スライダーの最大値 xSlider.set( 'length', '201px' ); // スライダーの表示サイズ // 数値テキストのノードを取得する var xInput = Y.one( TEXT_ID ); // 数値テキストをスライダーに関連付ける xInput.setData( { slider: xSlider } ); // 数値テキストのkeyupイベントにハンドラを登録する xInput.on( 'keyup', UpdateSlider ); // スライダーのvalueChangeイベントにハンドラを登録する xSlider.after( 'valueChange', UpdateText, xInput ); // スライダーを描画する xSlider.render( SLIDER_ID ) } );
void render ( parentNode )
初期化を確定し、ウィジェットの描画を行います。これは初期化時に一度だけ実行するものです。parentNodeはウィジェットを描画する親となるノードで、DOMのノードもしくはCSSのセレクタで指定します。API: widget Widget - render Method