我有一个像这样的输入元素:
<input value="hello world" class="my-input"/>
但是在 UI 中我只想显示没有 'world' 的 'hello' (也就是说,我想显示值的前 5 个字母)
我有可能使用 my-input 类实现这一点吗?我应该怎么做?
谢谢
我有一个像这样的输入元素:
<input value="hello world" class="my-input"/>
但是在 UI 中我只想显示没有 'world' 的 'hello' (也就是说,我想显示值的前 5 个字母)
我有可能使用 my-input 类实现这一点吗?我应该怎么做?
谢谢
你不能纯粹在 CSS 中做到这一点,但使用 jQuery 相当简单:
var myInputVal = $(".my-input").val();
$(".my-input").val(myInputVal.substr(0, 5));
见演示。
如果需要保留输入的原始值(这样在提交表单时,它发送的是“hello world”而不是“hello”),可以使用 HTML 数据属性来“存储”原始值,然后提交表单时检索它,如下所示:
var myInput = $(".my-input");
var myInputVal = myInput.val();
myInput.data("original-value", myInputVal);
myInput.val(myInputVal.substr(0, 5));
$("form").submit(function(e) {
e.preventDefault();
myInput.val(myInput.data("original-value"));
$(this).submit();
});
这是一个纯 CSS 解决方案
HTML:
<input value="1234567890" class="my-input" />
CSS:
input {
font-family: monospace;
font-size: 1em;
width: 3.2em;
padding: 0;
}
使用width
以em
单位表示但:
1em
等于用户最终将在其系统中看到的特定等宽字体的高度,而不是宽度。M在我当前的 Windows Vista 中,我使用默认等宽设置了 3.2em 的宽度,但您的里程可能会有所不同。因此,您必须特别谨慎地选择您选择的字体集,并在各种 Windows 操作系统(XP、Vista、Win7 和 Win8 都安装了它们的特定字体)上进行测试,这也取决于是否安装了 MS Office 和 Adobe Reader,如果是 web设计师/开发人员是目标,Visual thing 和 Creative 等工具)、OS X 和 Linux 风格。和手机。或者您可以从font-family
下载的字体开始@font-face
,然后继续在每个操作系统上使用具有相似宽度的字体...
如果 CSS 被用户禁用或自定义,那是失败的,所以你不应该依赖输入的宽度来传达意义或做某种技巧。这还不够健壮(盲人用户显然既不关心也不认为您的输入在视觉上仅限于显示 5 个字符,但仍包含更多字符)。
我认为仅使用 CSS 是不可能做到这一点的。您可以使用 maxlength HTML 属性或在 JavaScript 中执行某些操作。我意识到这不是你要的,但我认为这是不可能的。
有一个新的 HTML5 属性maxlength
可以限制输入中的字符数。( jsFiddle )
<input value="hello" class="my-input" maxlength="5" />
如果您的意思是要保留有关原始字符串“hello world”的信息,则需要使用 JavaScript,纯粹使用 CSS 无法实现。width
您可以通过使用/属性来接近,overflow
但它会因设备而异。