Список вводимых номеров с помощью jQuery - PullRequest
3 голосов
/ 25 апреля 2011

Я делаю какую-то работу, но у меня есть еще 3 проблемы. Я пробовал много способов, но ничего бесполезного. Если вы знаете jQuery достаточно, пожалуйста, предложите мне некоторые изменения.

Сначала посмотрите ниже URL:

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();
        }
    }
});
* * 1 042});

Ответы [ 3 ]

1 голос
/ 25 апреля 2011

Использование регулярных выражений для определения состояния: 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()
});
1 голос
/ 25 апреля 2011

2. используйте keyup для проверки номеров при наборе http://jsfiddle.net/2n7Tf/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!");
}
0 голосов
/ 25 апреля 2011
/^[79]\d{7}(,[79]\d{7}){0,2}$/.test($("#sms-sender").val())
...