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

标签 javascript jquery

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

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

这是一个 fiddle ,它首先显示前置文本的工作示例,然后显示附加的非工作示例:

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

最佳答案

完全是另一种方法:

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

关于javascript - 如何只允许在输入字段开头输入文本,并始终附加文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51658652/

相关文章:

可以在移动设备上触摸/滑动并在桌面上单击和拖动的 Javascript Gallery slider ?

javascript - jquery 在绑定(bind)元素上触发事件

javascript - 输入字段验证和显示条件

javascript - 如何在jsp中创建json对象?

javascript - 如何仅向订阅两个 channel 的安装发送解析推送通知,而不是向其中一个/或?

javascript - jquery 切换在 if-else 语句中不起作用

jquery - 如何使用 jQuery 验证插件验证表单?

javascript - 如何在使用 jQuery 关闭下拉菜单时触发事件?

javascript - 通过列表中的按键触发点击

javascript - 我应该使用哪些函数来进行 url 安全搜索重定向