用jQuery实时替换输入

用jQuery实时替换输入,jquery,Jquery,我对这个脚本有一个问题,我想用一个特定的字母实时替换输入字段中输入的任何内容,并在字段中使用Hello World <input id="inputID" type="text" value="" maxlength="11"/> $('#inputID').keyup(function(e){ var cv=["h","e","l","l","o"," ","w","o","r","l","d",""]; var i=$('#inputID').val(); f

我对这个脚本有一个问题,我想用一个特定的字母实时替换输入字段中输入的任何内容,并在字段中使用
Hello World

 <input id="inputID" type="text" value="" maxlength="11"/>
 $('#inputID').keyup(function(e){
  var cv=["h","e","l","l","o"," ","w","o","r","l","d",""];

  var i=$('#inputID').val();

  for (j=0;j<11;j++){

    this.value = this.value.replace(i[j],cv[j]);

}

});

$('#inputID').keyup(函数(e){
var cv=[“h”、“e”、“l”、“l”、“o”、“w”、“o”、“r”、“l”、“d”和“];
变量i=$('#inputID').val();

对于(j=0;j普通Javascript,这很快就会与大量事件混淆

jQuery在队列中为您安排操作,以便在适当的范围内执行这些操作

$('#inputID').keyup(function(e){
  var cv=["h","e","l","l","o"," ","w","o","r","l","d",""];

  var i=$('#inputID').val();

  for (j=0;j<11;j++){

    $(this).val($(this).val().replace(i[j],cv[j]));

}
});
$('#inputID').keyup(函数(e){
var cv=[“h”、“e”、“l”、“l”、“o”、“w”、“o”、“r”、“l”、“d”和“];
变量i=$('#inputID').val();
对于(j=0;j请尝试以下方法:

$('#inputID').keyup(function(e){
     var cv = 'hello world';
     this.value = cv.substr(0, this.value.length);
});

xdazz的解决方案是正确的(他比我快)

我认为展示一个完全不依赖jQuery的解决方案可能会有好处,所以不想依赖它的用户也可以从中受益

 document.getElementById('inputID').onkeyup = function () {
     var cv = "hello world"; // Your 'correct value' 
     //Set the value to a substring of cv at the current length
     this.value = cv.substring(0, this.value.length); 
 };

这是我在keyup上维护事件所能达到的最快速度:

var hw = "hello world";
$('#inputID').keyup(function(e){
    this.value = hw.substring(0, this.value.length);
});

编辑:我很惊讶三个人想出了几乎完全相同的解决方案。真的很酷

编辑2:我对其进行了一些调整,使其用空格替换最初键入的字符,以帮助减少替换字母的效果

var hw = "hello world";
$('#inputID').keydown(function (e) {
    if (e.which !== 8) { // allow backspace
        e.preventDefault();
        this.value += ' ';
    }
}).keyup(function () {
    this.value = hw.substring(0, this.value.length);
});

所以每次按键都要替换字母11次?正确且紧凑。我唯一要更改的是substr到substring,但这确实很小。“普通的Javascript很快就会被很多事件弄糊涂。”什么?你认为你的7行解决方案包括使用
.val($(this).val()运行for循环吗.replace()…
比我的4行香草版更干净(可以做得更短,但教学更少)?如果是这样,怎么做?@BenjaminGruenbaum我从来没有声称它更干净或更快,我只是修复了代码的问题。。