如何只允许在输入字段的开头输入文本,并始终附加文本

时间:2018-08-02 16:48:25

标签: javascript jquery

我以前有一个要求,要始终在文本输入字段中输入的内容之前(在开头放一些静态文本),并且永远不要删除该静态文本。我找到了一种非常有效的解决方案。

我的要求没有改变,我需要在文本框中输入的内容后面附加(放在末尾)一些静态文本。我希望静态文本始终显示在文本框中,并且希望将输入的任何文本放置在静态文本之前。理想情况下,每当用户单击输入或将其制表时,光标将自动置于文本输入中的“零位置”。

这里是一个小提琴,它首先显示了要附加的文本的有效示例,然后显示了附加的无效示例:

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

1 个答案:

答案 0 :(得分:1)

完全另一种方法:

$(document).ready(function() {
  $('#append').on("input", function(e) {
     var s = this.value.replace(" - Student Worker", "");
     this.value = s + " - Student Worker";
  });
});