我正在编写一个jquery代码,它应该用我在变量中定义的字符来切换输入字符。到目前为止,如果您一次只按一个字符,代码就能很好地工作。但是,一旦你一次击中多个字符,你就开始破坏结果。有什么样的选项可以使jquery一次只使用一个字符,或者正确地读出并转换多个字符。
多个字符按得太快或按得太快的结果类似地导致变量的字符串混合或/和混合了来自多个输入的一些字符。
我已经了解了禁用输入的.prop()函数,但是即使我禁用了输入,也不能阻止多个字符被传递到函数中。
提前谢谢各位,干杯
HTML:
jQuery(document).ready(function(){
String.prototype.removeChar = function(){
var string = "";
for(var i = 0, length = this.length-1; i<length; i++){
string += this.charAt(i);
}
return string;
}
var name = "Some Random Name",
length,
sub = "",
event,
array=[];
$("form").on("keyup", function(e){
event = e.keyCode;
if (e.keyCode === 8){
length = $(".input").val().length;
sub = sub.removeChar();
$(".input").val(sub);
}else{
length = $(".input").val().length;
sub += name.charAt(length-1);
$(".input").val(sub);
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>Who should be President?<input type="text" name="president" class="input"></form>
发布于 2016-10-28 09:47:29
只要改变
sub += name.charAt(length-1);
至
sub = name.substring(0, length);
其思想是只获取用户输入的字符总数,并使用name
函数从子串变量中获取多个字符。
jQuery(document).ready(function(){
String.prototype.removeChar = function(){
var string = "";
for(var i = 0, length = this.length-1; i<length; i++){
string += this.charAt(i);
}
return string;
}
var name = "Some Random Name",
length,
sub = "",
event,
array=[];
$("form").on("keyup", function(e){
event = e.keyCode;
if (e.keyCode === 8){
length = $(".input").val().length;
sub = sub.removeChar();
$(".input").val(sub);
}else{
length = $(".input").val().length;
sub = name.substring(0, length); // this is the change
$(".input").val(sub);
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>Who should be President?<input type="text" name="president" class="input"></form>
发布于 2016-10-28 09:47:14
改变你的
$(".input").val(sub);
至
$(".input").val(name.substring(0, length));
然后将状态更改为
if (e.keyCode !== 8){
length = $(".input").val().length;
sub += name.charAt(length-1);
$(".input").val(name.substring(0, length));
}
在这种情况下,如果单击“后退”按钮,则什么也不做。
jQuery(document).ready(function(){
String.prototype.removeChar = function(){
var string = "";
for(var i = 0, length = this.length-1; i<length; i++){
string += this.charAt(i);
}
return string;
}
var name = "Some Random Name",
length,
sub = "",
event,
array=[];
$("form").on("keyup", function(e){
event = e.keyCode;
if (e.keyCode !== 8){
length = $(".input").val().length;
sub += name.charAt(length-1);
$(".input").val(name.substring(0, length));
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>Who should be President?<input type="text" name="president" class="input"></form>
发布于 2016-10-28 09:47:15
只需将整个输入val替换为随机名称,并将val缩短。
$("form").on("keyup", function(e){
event = e.keyCode;
if (e.keyCode != 8){
length = $(".input").val().length;
//sub += name.charAt(length-1);
$(".input").val(name.substring(0, length));
}
});
https://stackoverflow.com/questions/40302119
复制相似问题