繁体   English   中英

如何限制文本框中的逗号少于3个?

[英]How can I limit a textbox to have less than 3 commas in it?

例如,我们有一个文本框,用于博客标签。 我想要的是限制标签数量。 例如,“虚拟主机,php,windows8”。 当用户尝试在另一个以逗号开头的文本框中键入内容时,该文本框将不允许他编写。

在您的keypress处理程序中,捕获event对象并执行;

if (event.which == 44 && $(this).val().split(",").length > 2) {
    event.preventDefault();
}

在这里查看实际操作; http://jsfiddle.net/5L7mU/

我们可以将此问题分为3个较小的问题。

首先,我们需要一种阻止用户将内容写入文本框的方法。 当您在keypress上挂接回调时,传递的事件具有一个称为preventDefault的方法,该方法可以完成此工作。 因此,阻止所有输入:

$("input").keypress(function(event) {
    event.preventDefault();
});

现在,要检查文本框中已经有多少个昏迷,我们可以使用正则表达式。 如果没有匹配项,则match函数将返回null而不是一个空数组,因此我们必须进行检查。

$("input").keypress(function(event) {
    var matches = $(this).val().match(/,/g);
    var count = 0;
    if (matches)
        count = matches.length;
    console.log(count);
});

最后,我们需要能够检查用户是否输入了逗号。 event具有一个名为的属性which包含输入字符的键控代码。 经过一些探索,您会发现昏迷的关键代码是44。

$("input").keypress(function(event) {
    if (event.which == 44)
        event.preventDefault();
});

因此,如果我们将所有内容放在一起:

$("input").keypress(function(event) {
    var matches = $(this).val().match(/,/g);
    var count = 0;
    if (matches)
        count = matches.length;

    if (count >= 2 && event.which == 44)
        event.preventDefault();
});

http://jsfiddle.net/4wn5W/

$(document).ready(function(){
    $('#textbox').keypress(function(e){
        var text = $(this).val();
        if(text.split(',').length>3){
             return false;
        }else if(e.which==44&&text.split(',').length>2){
           return false
        }
    });
});

小提琴:

http://jsfiddle.net/L4X4C/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM