2012-06-25 2 views
8

У меня есть кнопка и скрытый ввод.jqueryui datepicker со скрытым вводом

Я хочу, чтобы датапикер открылась под кнопкой, которую я нажимаю. И выбранная дата вставляется в скрытый ввод.

Я не хочу создавать новую кнопку (используя параметры 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

Это немного Hacky, но это, кажется, работает хорошо:

  1. Прикрепите DatePicker к 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, datepicker дросселирует на '$ .browser.msie'. – kibibu

+1

Вместо использования скрытого ввода используйте текстовый ввод и спрячьте его с помощью CSS. Инициализация datepicker на скрытом входе вызовет ошибку при позиционировании. –

12

Я сделал это делает .Show() фокус() скрыть() - работает отлично, хотя это немного нечистым:

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

http://jsfiddle.net/JKLBn/

+0

Не работает в IE с более новыми версиями jQuery. (Наверное, потому что IE ставит фокус асинхронно) –

Смежные вопросы