WickecdPickerで複数入力ボックスの移動時ダイアログをhideする

最終更新日

テキストボックスをフォーカスすると時刻入力を補助してくれる
JqueryプラグインのWickedPicker。

他にも色々ありますが、UIの感じが好きでこれを使ってます。

ただ、このWickedPickerのUX的にイケてないところは
どこかのテキストで、Pickerを開いている状態で
テキストを移動しても、Pickerが消えないという点。

DEMO通りに使う場合
【HTML】

<input type="text" name="timepicker" class="timepicker"/>

【javascript】

var timepicker = $('.timepicker').wickedpicker();

基本はこんな感じ。
で、テキストボックスのフォーカスが移動した際、
Pickerを消したり、再表示したりする処理を追記

$(.timepicker).on('click focus blur', function(e){
    $(.timepicker).wickedpicker('hide');
});
var timepicker = $('.timepicker').wickedpicker();

wickedpickerを定義する前にフォーカス関連の
処理を定義しておきます。

やってることは、wickedPickerを全部消してるだけです。
消した後、表示される感じですね。

前で定義した理由は、あとから定義すると、
表示した後に消しちゃうから。

ちなみに、余談ですが、
テキストボックスのデフォルト値をPickerに反映させたり
Stepなんかも<input>側で指定する運用をしたいので
いつもこんな感じで使ってます。
入力ボックス2つの例です。

【HTML】

<pinput name="start" type="text" class="timepicker" wicked-step="5" value="09:00"/>
<pinput name="end" type="text" class="timepicker" wicked-step="5" value="18:00"/>

【javascript】

$('.timepicker').on('click focus blur', function(){
	$('.timepicker').wickedpicker('hide');
});
$( '.timepicker' ).each( function(){
	$(this).wickedpicker({
		twentyFour: true,
		now: $(this).val(),
		minutesInterval: $(this).attr('wicked-step')
	});
});

masa