3

私はいくつかの仕事をしていますが、まだ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();
        }
    }
});

});

4

3 に答える 3

1

2. 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!");
}
于 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 に答える