强制输入元素的宽度根据其内容/值的大小调整

6
我正在尝试取消样式化输入元素,以使其文本看起来像普通/内联文本,并且我已经重置了它可能具有的几乎所有CSS属性,但是我无法使输入的宽度调整/缩小到其内容(input { width:auto; min-width:0; }不起作用)。它遵循任意宽度,例如input { width: 10px; },因此显然它的宽度是可以调整的。
我看到人们试图使用JavaScript来实现这一点(答案中的fiddle不再起作用),所以我想知道我想要的是否可能。
这里是一个fiddle

很高兴看到你的尝试,这样我们就不会重复劳动了。请展示你所使用的样式。 - isherwood
@isherwood,非常抱歉。我创建了一个fiddle但是忘记在问题中链接它了。 - Jakob Jingleheimer
定义一个特定的宽度有什么问题吗?告诉它是5em宽似乎对于填充文本字段的任何给定日期都是正确的。 - cimmanon
@cimmanon,本地化 ;) - Jakob Jingleheimer
2个回答

1
如果您想避免样式问题,只需进行一些文本调整怎么办?使用jQuery,您已经拥有了所需的一切。

http://jsfiddle.net/2fQgY/8/

The date is <span class="dateSpoof"></span><input class="myDate" type="hidden" value="foo" />. 
Thanks for coming.

$('.myDate').datepicker({
    showOn: 'button',
    buttonText: 'select...',
    onClose: function () {
        var dateText = $(this).val();
        $('.dateSpoof').html(dateText);
        $('.ui-datepicker-trigger').hide();
    },
    dateFormat: 'd M yy'
});

这是一个可重置的示例:http://jsfiddle.net/2fQgY/11 这是一个纯文本示例:http://jsfiddle.net/2fQgY/14

问题在于它应该看起来像纯文本(没有按钮或输入字段)。此外,一旦数据被选择,就无法重新选择(这在我的应用程序中会经常发生)。 - Jakob Jingleheimer
AngularUI(https://github.com/angular-ui/angular-ui/tree/master/modules/directives/date)将应用日期选择器的任何内容(除了输入元素)转换为日历的容器:“<span ui-date =” {options}“> 15 Feb 2013 <span>”变成了日历的容器。我在原始问题中没有提到AngularUI,因为我的问题不是关于datepicker / AngularUI的。我会尝试黑客攻击该库以避免这种讨厌的行为(但指令相当复杂)。 - Jakob Jingleheimer
有点...我得写自己的指令来使用你的方法。 - Jakob Jingleheimer
好的,也没关系。这毕竟是一个有趣的小项目。 - isherwood
isherwodd:我刚刚发现了angular-ui的jq指令(https://github.com/angular-ui/angular-ui/tree/4d8c6fb8b54dc2e021b32029fe5a79d567888987/modules/directives/jq),所以我可能仍然可以使用你的方法 :) - Jakob Jingleheimer

1

我认为我需要使用一个输入元素(与jqueryUI的日期选择器一起工作,并且使用一个div会导致日历出现在div内部)。 - Jakob Jingleheimer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接