2012-06-25 31 views
8

ボタンと隠れた入力があります。jqueryui隠し入力付きの日付ピッカー

私はそれをクリックしてボタンの下に日付ピッカーを開きます。 選択した日付が非表示の入力に挿入されます。

私は新しいボタン(datepickerオプションを使用)を作成したくないので、入力を表示したくありません。

<button type="button" class="btn" id="date_button">Select Date...</button> 

<input type="hidden" name="date" id="date_field" /> 

<script> 
    $('#date_button').datepicker({ 
     showOn: "button", 
     onSelect: function(dateText) { 
      $('#date_field').val(dateText); 
      $('#date_button').text(dateText); 
     } 
    }) 
</script> 

+0

あなたのコードを表示できますかああ? –

答えて

1

これは少しハックですが、大丈夫に動作するようです:

  1. ではなく、ボタンのinputに日付ピッカーを取り付けます。
  2. ボタンが開いたときに、日付ピッカーをボタンの下に配置しなおします。
var $button = $("#date_button"), 
    left = $button.offset().left, 
    top = $button.offset().top + $button.height(); 

$('#date_field').datepicker({ 
    onSelect: function(dateText) { 
     $('#date_field').val(dateText); 
     $button.text(dateText); 
    }, 
    beforeShow: function (event, ui) { 
     setTimeout(function() { 
      ui.dpDiv.css({ left: left, top: top });  
     }, 5);    
    } 
}); 

$button.on("click", function() { 
    $("#date_field").datepicker("show"); 
}); 

例:http://jsfiddle.net/StUsH/

+0

それはもう動作していないようです。 –

+1

@ J.Ghyllebert私は動作するバージョンにjsfiddleを更新しました。 jsfiddleには、jQuery 1.9.1とjQueryUI 1.9.2、 '$ .browser.msie'のdatepickerのチョークに問題があるようです。 – kibibu

+1

隠し入力を使用する代わりに、テキスト入力を使用してCSSで非表示にします。隠された入力でdatepickerを初期化すると、位置決め時にエラーが発生します。 –

12

I)は、(フォーカス)(.SHOWをすることによってこれをしなかった)(隠す - それは少し汚れていても完璧に動作します:。。

$(document).ready(function() { 
    $('input').datepicker(); 
     $('#mybutton').click(function() { 
     $('input').show().focus().hide(); 
    }); 
}); 

http://jsfiddle.net/JKLBn/

+0

新しいjQueryバージョンでIEで動作しません。 (おそらく、IEはフォーカスを非同期に設定するため) –

関連する問題