首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jQuery:一次防止多个输入

jQuery:一次防止多个输入
EN

Stack Overflow用户
提问于 2016-10-28 09:29:48
回答 3查看 48关注 0票数 0

我正在编写一个jquery代码,它应该用我在变量中定义的字符来切换输入字符。到目前为止,如果您一次只按一个字符,代码就能很好地工作。但是,一旦你一次击中多个字符,你就开始破坏结果。有什么样的选项可以使jquery一次只使用一个字符,或者正确地读出并转换多个字符。

多个字符按得太快或按得太快的结果类似地导致变量的字符串混合或/和混合了来自多个输入的一些字符。

我已经了解了禁用输入的.prop()函数,但是即使我禁用了输入,也不能阻止多个字符被传递到函数中。

提前谢谢各位,干杯

HTML:

代码语言:javascript
运行
复制
    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);
                }
        });
        
    });
代码语言:javascript
运行
复制
<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>

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-10-28 09:47:29

只要改变

代码语言:javascript
运行
复制
  sub += name.charAt(length-1);

代码语言:javascript
运行
复制
sub = name.substring(0, length);

其思想是只获取用户输入的字符总数,并使用name函数从子串变量中获取多个字符。

代码语言:javascript
运行
复制
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);
                }
        });
        
    });
代码语言:javascript
运行
复制
<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>

票数 0
EN

Stack Overflow用户

发布于 2016-10-28 09:47:14

改变你的

代码语言:javascript
运行
复制
$(".input").val(sub);

代码语言:javascript
运行
复制
$(".input").val(name.substring(0, length));

然后将状态更改为

代码语言:javascript
运行
复制
if (e.keyCode !== 8){
    length = $(".input").val().length;
    sub += name.charAt(length-1);
    $(".input").val(name.substring(0, length));
}

在这种情况下,如果单击“后退”按钮,则什么也不做。

代码语言:javascript
运行
复制
    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));
            }
        });
        
    });
代码语言:javascript
运行
复制
<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>

票数 0
EN

Stack Overflow用户

发布于 2016-10-28 09:47:15

只需将整个输入val替换为随机名称,并将val缩短。

代码语言:javascript
运行
复制
 $("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));

                }
        });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40302119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档