使用 jQuery 输入数字列表

发布于 2024-11-03 08:14:41 字数 1650 浏览 5 评论 0原文

我正在做一些工作,但仍然有 3 个问题。我尝试了很多方法,但没有什么用。如果您足够了解 jQuery,请建议我进行一些更改。

首先请查看以下网址:

http://jsfiddle.net/thisizmonster/maP57/

我在做什么是:

  1. 用户将输入电话号码。
  2. 数字长度仅为 8 个字符。
  3. 数字必须以 9 或 7 开头。表示 9xxxxxxx 或 7xxxxxxx。
  4. 用户最多可以输入 3 个数字。
  5. 数字必须用逗号分隔。

当前的问题是:

  1. 数字后面不能有逗号。仅在数字之间。
  2. 写入时验证 9xxxxxxx 或 7xxxxxxx 格式的数字。
  3. 他们无法输入连续逗号。我的意思是“,,”不允许。

如果您在 jsfiddle 上看不到示例,这里是复制版本:

HTML

<input type="text" id="sms-sender" />

JS

$(document).ready(function() {

$("#sms-sender").keypress(function(event) {
    var numbers = $("#sms-sender").val().split(',');
    var maxMsg = 3;

    if (event.which != 44 && (event.which < 47 || event.which > 59) || numbers.length > maxMsg) {
        event.preventDefault();
    }
    if (numbers.length > maxMsg) {
        event.preventDefault();
    }
    if (event.which == 44) {
        if (numbers.length <= maxMsg) {
            $("#number-div").html("");
            for (i = 0; i < numbers.length; i++) {
                $("#number-div").append("<div class='numbers'>&nbsp;"+numbers[i]+"</div>").fadeIn('slow');
                if (numbers[i].length != 8) {
                    $("#number-div").append("wrong")
                }
            }
        }
    }
    if (numbers[numbers.length - 1].length > 7) {
        if (event.which != 44) {
            event.preventDefault();
        }
    }
});

});

I'm making some work, but there are 3 issues still I have. I tried many ways, but nothing useless. If you know jQuery enough, please suggest me some changes.

First please view below URL:

http://jsfiddle.net/thisizmonster/maP57/

What am I doing is:

  1. User will input phone number.
  2. Number will be only 8 char length.
  3. Number must begin with 9 or 7. Means 9xxxxxxx or 7xxxxxxx.
  4. User can enter maximum 3 numbers.
  5. Numbers must seperate with comma.

Current problem is:

  1. There mustn't any comma after numbers. Only between numbers.
  2. Validate numbers with 9xxxxxxx or 7xxxxxxx format while writing.
  3. They can't enter continues commas. I mean ",," don't allow.

If you can't see example on jsfiddle, here is copied version:

HTML

<input type="text" id="sms-sender" />

JS

$(document).ready(function() {

$("#sms-sender").keypress(function(event) {
    var numbers = $("#sms-sender").val().split(',');
    var maxMsg = 3;

    if (event.which != 44 && (event.which < 47 || event.which > 59) || numbers.length > maxMsg) {
        event.preventDefault();
    }
    if (numbers.length > maxMsg) {
        event.preventDefault();
    }
    if (event.which == 44) {
        if (numbers.length <= maxMsg) {
            $("#number-div").html("");
            for (i = 0; i < numbers.length; i++) {
                $("#number-div").append("<div class='numbers'> "+numbers[i]+"</div>").fadeIn('slow');
                if (numbers[i].length != 8) {
                    $("#number-div").append("wrong")
                }
            }
        }
    }
    if (numbers[numbers.length - 1].length > 7) {
        if (event.which != 44) {
            event.preventDefault();
        }
    }
});

});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

薯片软お妹 2024-11-10 08:14:41

使用正则表达式来表示 9 或 7 ([97]) 后跟 7 个数字和逗号 (\d{7},) 0 到 2 次 ({0,2}) 涵盖您当前正在写入的数字之前的所有内容,而该数字又由 9 或 7 ([97]) 后跟 0 到 7 位数字覆盖(\d{0,7}) 全部可选 (?)。

http://jsfiddle.net/xTRph/

html:

<input type="text" id="sms-sender" />

JavaScript:

var lastGood = ''
$("#sms-sender").bind('keyup',function(e){
    if(!$('#sms-sender').val().match(/^([97]\d{7},){0,2}([97]\d{0,7})?$/))
        $('#sms-sender').val(lastGood)
    else
       lastGood = $('#sms-sender').val()
});

Using regular expressions to state, 9 or 7 ([97]) followed by 7 digits and a comma (\d{7},) 0 to 2 times ({0,2}) covers everything before the number you are currently writing which in turn is covered by 9 or 7 ([97]) followed by 0 to 7 digits (\d{0,7}) all optionally (?).

http://jsfiddle.net/xTRph/

html:

<input type="text" id="sms-sender" />

javascript:

var lastGood = ''
$("#sms-sender").bind('keyup',function(e){
    if(!$('#sms-sender').val().match(/^([97]\d{7},){0,2}([97]\d{0,7})?$/))
        $('#sms-sender').val(lastGood)
    else
       lastGood = $('#sms-sender').val()
});
梦屿孤独相伴 2024-11-10 08:14:41

2. 在输入 http://jsfiddle.net/2n7Tf/ 时使用 keyup 验证数字1/

$('#sms-sender').keyup(validateNumber);

1. & 2. 对于其他内容,您可以使用正则表达式。但我不确定你的逗号是什么意思。请解释一下。

/^[0-9]+$/.test(number)

如果数字与正则表达式匹配,则返回 true。所以你就可以了: http://jsfiddle.net/2n7Tf/4/

if(/^([0-9]+,)*[0-9]+$/.test($('#sms-sender').val())){
    alert("match!");
}

2. use keyup to validate numbers while typing http://jsfiddle.net/2n7Tf/1/

$('#sms-sender').keyup(validateNumber);

1. & 2. for the other stuff you can use regular expressions. But I am not sure what you mean with the comma. Please explain that.

/^[0-9]+$/.test(number)

will return true if number matches the regular expression. So here you go: http://jsfiddle.net/2n7Tf/4/

if(/^([0-9]+,)*[0-9]+$/.test($('#sms-sender').val())){
    alert("match!");
}
猫七 2024-11-10 08:14:41
/^[79]\d{7}(,[79]\d{7}){0,2}$/.test($("#sms-sender").val())
/^[79]\d{7}(,[79]\d{7}){0,2}$/.test($("#sms-sender").val())
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文