【问题标题】:Stop user input after word has been found in textarea在 textarea 中找到单词后停止用户输入
【发布时间】:2013-07-08 23:12:52
【问题描述】:

我正在尝试整理一些看起来很简单的东西,但由于某种原因,我无法让return false; 正常工作。在找到“img”一词三次后,我试图阻止用户输入更多文本。 return false; 由于某种原因不起作用。除了如何阻止用户键入之外,我的演示中的所有内容都可以正常工作。任何帮助都会很棒。

演示:jsfiddle.net/ryanverdel/2cAeX/

$('#test').keyup(function(e){
var v = $(this).val(),
    w = v.split(/\b[\s,\.-:;]*/),
    word = 'img',
    c = 0;
for (var i=0,len=w.length;i<len;i++){
    if (w[i] === word){
        c++;
    }
    if(c == 3){
    return false           
    }
}
$('#output').text(c);
});

【问题讨论】:

    标签: jquery textarea maxlength


    【解决方案1】:

    使用 keyup 有点晚了,因为该键已经被按下:

    $('#test').keypress(function(e){
        var v = $(this).val(),
            w = v.split(/\b[\s,\.-:;]*/),
            word = 'img',
            c = 0;
        for (var i=0,len=w.length;i<len;i++){
            if (w[i] === word){
                c++;
            }
    
        }
        if(c == 3){
            return false           
        }
        $('#output').text(c);
    });
    

    FIDDLE

    这里有一个更简单的方法:

    $('#test').on('keypress', function(e){
        var word  = 'img',
            count = this.value.match(new RegExp('\\b'+word+'\\b','g')) || [];
    
        $('#output').text(count.length);
        return count.length < 3;
    });
    

    FIDDLE

    编辑:

    由于要求似乎能够使用退格,因此无法使用按键,因为它不注册退格。
    但是,keydown 会,并且我们可以使用一些巧妙的魔法:

    $('#test').on('keydown', function(e){
        var word  = 'img',
            count = this.value.match(new RegExp('\\b'+word+'\\b','g')) || [];
    
        $('#output').text(count.length);
        return !(count.length > 2 && e.which != 8); // 8 is backspace
    });
    

    FIDDLE

    【讨论】:

    • 谢谢!它完全让我忘记了。不知道我是怎么忘记按键的。现在唯一的另一个问题是让他们使用退格键删除文本。现在我们打电话给return false,这可能吗?
    • @ryan - 不,按退格键是不可能的,我也会为此添加一个解决方案。
    • 非常好!向你致敬!像魅力一样工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多