我以前有一个要求,要始终在文本输入字段中输入的内容之前(在开头放一些静态文本),并且永远不要删除该静态文本。我找到了一种非常有效的解决方案。
我的要求没有改变,我需要在文本框中输入的内容后面附加(放在末尾)一些静态文本。我希望静态文本始终显示在文本框中,并且希望将输入的任何文本放置在静态文本之前。理想情况下,每当用户单击输入或将其制表时,光标将自动置于文本输入中的“零位置”。
这里是一个小提琴,它首先显示了要附加的文本的有效示例,然后显示了附加的无效示例:
https://jsfiddle.net/dsdavis/x9d36veu/25/
在第二个示例中开始键入时,您会看到在框的开头仅显示最后键入的字符。
我需要指出的实现方式之间的细微差别是,在工作示例中,我使用了“ indexOf”:
$(document).ready(function() {
$('#prepend').keyup(function(e) {
if (this.value.length < 16) {
this.value = 'Student Worker - ';
} else if (this.value.indexOf('Student Worker - ') !== 0) {
this.value = 'Student Worker - ' + String.fromCharCode(e.which);
}
});
});
在非工作示例中,我使用“ lastIndexOf”:
$(document).ready(function() {
$('#append').keyup(function(e) {
if (this.value.length < 17) {
this.value = ' - Student Worker';
} else if (this.value.lastIndexOf(' - Student Worker') !== 17) {
this.value = String.fromCharCode(e.which) + ' - Student Worker';
}
});
});
也许使用“ lastIndexOf”是完全错误的,但这似乎是正确的方法。
有人可以帮助我想出一种方法吗?要始终在文本框中显示静态文本“-Student Worker”,并将任何输入的文本放在该静态文本之前?
谢谢!
Doug
答案 0 :(得分:1)
完全另一种方法:
$(document).ready(function() {
$('#append').on("input", function(e) {
var s = this.value.replace(" - Student Worker", "");
this.value = s + " - Student Worker";
});
});