带有隐藏输入的jqueryui datepicker

时间:2012-06-25 16:42:20

标签: jquery-ui datepicker jquery-ui-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>

有什么想法吗?

3 个答案:

答案 0 :(得分:13)

我是通过做一个.show()。focus()。hide() - 完美地工作虽然它有点不洁净:

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

http://jsfiddle.net/JKLBn/

答案 1 :(得分:1)

这有点hacky,但似乎工作正常:

  1. 将日期选择器附加到input而不是按钮。
  2. 当按钮打开时,将日期选择器重新定位在按钮下方。
  3. 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/

答案 2 :(得分:0)

我以不同的方式做到了。 我通过按钮隐藏了正常的文本输入样式:

style="outline: none; color:white; margin-top:-20px; border:none;"

所以它不会出现在页面上。它是可聚焦的,它只是工作正常。