1

私がしようとしているのは、郵便番号入力用の単純なフォーム フィールドで、最大 4 桁の入力が可能です。

私のjsfiddleをチェックしてください。それは正常に動作します。唯一の問題は、完全な4桁の数字があり、内部のテキストが選択されている場合、数字を入力するときにそれを上書きできないことです。最初に削除を押してから数字を挿入する必要があります

http://jsfiddle.net/vCceN/2/

もう 1 つは、重要ではありませんが、ユーザーが最初の数字として 0 (ゼロ) を入力できないようにするにはどうすればよいですか?


私はクンダンの解決策を使用し、(私の意見では)ゼロ問題を導くためのより良い解決策を追加しました:

$(document).ready(function(){
    var IsSelect = false;
    $('#fld_1').select(function(){
        IsSelect = true;
    }).keypress(function (event){

        if( event.which==8 || event.which==0 || event.which == 27) return true;
        if($(this).val().length > 3 && !IsSelect) return false;
        if(IsSelect && event.which == 48) return false;
        if($(this).val().length == 0 && event.which == 48) return false;

        var regex = new RegExp("^[0-9]");

        var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
        if (!regex.test(key)) {
            event.preventDefault();
            return false;
        }
        IsSelect = false;
    });

});

ワーキングデモ

それはほぼ完全に機能します...唯一の問題は、ユーザーが入力ボックス内のテキストを部分的に選択する場合です(たとえば、最後の2桁...ゼロで書き始めることはできませんが、先頭ではなく 3 番目の文字

4

1 に答える 1

3

それはあなたの両方の問題を解決します

$(document).ready(function(){
  var IsSelect = false;
  $('#fld_1').select(function(){
     IsSelect = true;
  });
  $('#fld_1').keypress(function (event){

    if( event.which==8 || event.which==0 || event.which == 27) return true;
    if($(this).val().length > 3 && !IsSelect) return false;

    var regex = new RegExp("^[0-9]");

    var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
    if (!regex.test(key)) {
        event.preventDefault();
        return false;
    }
    IsSelect = false;
  });

  $('#fld_1').keyup(function (event){
    $(this).val(this.value.replace(/\b0+/g, ""));     
  });
});

ワーキングデモ

于 2012-08-10T17:36:14.693 に答える