gpt4 book ai didi

css - 如何获得与输入内联的 jQuery UI Datepicker 按钮?

转载 作者:技术小花猫 更新时间:2023-10-29 10:17:44 25 4
gpt4 key购买 nike

在 MVC 5 元素中,使用默认 Bootstrap 布局,我使用以下代码将特定类的所有输入设置为 jQuery UI Datepicker 小部件:

$(".jqueryui-marker-datepicker").datepicker({
dateFormat: "yy-mm-dd",
changeYear: true,
showOn: "button"
}).next("button").button({
icons: { primary: "ui-icon-calendar" },
label: "Select a date",
text: false
});

这是执行上述调用后由 Razor 和 jQuery UI 呈现的 HTML,减去一些 aria 和验证 data 属性:

<div class="form-group">
<label class="control-label col-md-2" for="Time">Date</label>
<div class="col-md-10">
<input class="form-control jqueryui-marker-datepicker hasDatepicker valid" id="Time" name="Time" type="text" value="2015-05-02">
<button type="button" class="ui-datepicker-trigger ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only" role="button" title="Select a date">
<span class="ui-button-icon-primary ui-icon ui-icon-calendar"></span><span class="ui-button-text">Select a date</span>
</button>
<span class="text-danger field-validation-valid" data-valmsg-for="Time" data-valmsg-replace="true"></span>
</div>
</div>

问题是日期选择器按钮出现在日期输入下方。这是因为 Bootstrap .form-control 类为输入提供了一个 display: block。如果我在 Chrome 的控制台中将其编辑为 inline-block,该按钮会立即出现在输入的右侧,正是我想要的位置。

现在我可以添加一个新的 css 规则如下:

.form-control.jqueryui-marker-datepicker {
display: inline-block;
}

但我只是不确定这是否是最简洁的方法,对 Bootstrap 所做的所有布局魔术的影响最小。

最佳答案

在输入旁边显示按钮的 Bootstrap 隐喻是使用 input-group像这样:

<div class="input-group">
<input type="date" class="form-control" placeholder="Date" />
<span class="input-group-btn">
<button class="btn btn-default" type="button">
<span class="glyphicon glyphicon-calendar" ></span>
</button>
</span>
</div>

你可以调整你的脚本来格式化输出,通过像这样包装内容来添加这些类和 html 结构:

$(".jqueryui-marker-datepicker")
.wrap('<div class="input-group">')
.datepicker({
dateFormat: "yy-mm-dd",
changeYear: true,
showOn: "button"
})
.next("button").button({
icons: { primary: "ui-icon-calendar" },
label: "Select a date",
text: false
})
.addClass("btn btn-default")
.wrap('<span class="input-group-btn">')
.find('.ui-button-text')
.css({
'visibility': 'hidden',
'display': 'inline'
});
<link href="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.4/jquery-ui.css" rel="stylesheet"/>
<link href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.2/css/bootstrap.css" rel="stylesheet"/>

<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.2/js/bootstrap.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.4/jquery-ui.js"></script>

<input type="text" class="jqueryui-marker-datepicker form-control">


带 Bootstrap 的替代方案

话虽如此,这是一种相当复杂的方法。我会添加一个 native Bootstrap glyphicon,而不是试图强制按钮正确显示。混合使用 jQuery-UI 和 Bootstrap 也很不常见,因为它们在功能上有很多重叠,而且它们并不总能很好地协同工作。我建议研究使用日期选择器插件扩展 bootstrap。

这是一个使用 的例子

$('.datepicker').datepicker({});

//
$('.datepicer-icon').on('click', '.btn', function(e) {
$(e.delegateTarget).find('.datepicker').focus();
});
<link href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.2/css/bootstrap.css" rel="stylesheet"/>
<link href="//cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.3.1/css/datepicker.css" rel="stylesheet"/>

<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.2/js/bootstrap.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.3.1/js/bootstrap-datepicker.js"></script>

<div class="container" >

<h3>With Input Group</h3>
<div class="input-group datepicer-icon">
<input type="text" class="form-control datepicker" placeholder="Date" />
<span class="input-group-btn">
<button class="btn btn-default" type="button">
<span class="glyphicon glyphicon-calendar" ></span>
</button>
</span>
</div>

<h3>With Feedback</h3>
<div class="form-group has-feedback">
<input type="text" class="form-control datepicker" placeholder="Date" />
<i class="glyphicon glyphicon-calendar form-control-feedback"></i>
</div>

</div>

关于css - 如何获得与输入内联的 jQuery UI Datepicker 按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29988985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com