3

我正在做一些工作,但我还有 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();
        }
    }
});

});

4

3 回答 3

1

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

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

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

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

如果 number 与正则表达式匹配,将返回 true。所以你去:http: //jsfiddle.net/2n7Tf/4/

if(/^([0-9]+,)*[0-9]+$/.test($('#sms-sender').val())){
    alert("match!");
}
于 2011-04-25T08:50:29.647 回答
1

使用正则表达式表示,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()
});
于 2011-04-25T08:59:24.430 回答
0
/^[79]\d{7}(,[79]\d{7}){0,2}$/.test($("#sms-sender").val())
于 2011-04-25T09:02:16.990 回答