2

私が達成しようとしているのはコードチェッカーです。最初の 4 つの数字だけが重要で、他の数字は任意の数字にすることができます。このフォームは、ユーザーが製品コードを入力するために使用されます。

問題は、変数が 5 つの数字に変わった場合、変数が false になることです。

以下の例を参照してください。

http://jsfiddle.net/MZfxs/3/

ユーザーが数字 3541 を入力すると、ボックスの色が変わりますが、ユーザーが残りの数字を入力すると、値は false に設定されます。

さらに、13 個の数字が挿入され、最初の 4 個の数字がその順序で一致する場合にのみ、ボックスの色が変わるようにしようとしています。

解決しました!作業例: http://jsfiddle.net/MZfxs/8/

4

3 に答える 3

1

私の理解が正しければ、フィールド値の検証が必要であり、要件は値が7514やのような 4 つの数字から始まる必要があること9268です。ここでは、次のような正規表現を使用して入力値を検証できます。

// Will work for " 123433 " or "12345634 ", etc.
var value = $(this).val(),
    re = /^\s*(\d{4})(\d+)\s*$/, // better to initialize only once somewhere in parent scope
    matches = re.exec(value),
    expectedCode = 3541,
    expectedLength = 13;
if(!!matches) {
    var code = matches[1]; // first group is exactly first 4 digits
    // in matches[2] you'll find the rest numbers.
    if(value.length == expectedLength && code == expectedCode) {
        // Change the color...
    }
}

また、要件が 13 の長さに厳密である場合は、正規表現を次のように変更できます。

var re = /^(\d{4})(\d{9})$/;

最初のグループで最初の 4 つの数字を取得し、2 番目のグループで残りの 9 を取得します。

var matches = re.exec(value);
if(!!matches) {
    var first4Digits = matches[1],
        rest9Digits = matches[2];
    // ...
    // Also in this way you'll not need to check value.length to be 13.
}
于 2012-09-13T11:25:05.613 に答える
0

キーイベントが発生するたびに文字列を壊すことができます。これを行うには、js substring()メソッドを呼び出し、最初の4文字を取得して確認します。

于 2012-09-13T11:20:37.730 に答える
0

これを使用してみてください:

<script>
    $("input").keyup(function () {
      var value = $(this).val();
      $("p").text(value);
     var value2 = $(this).val().substr(0,4);
  if(value2 == 3541){
       $(".square").css("background-color","#D6D6FF");


    }else{
     $(".square").css("background-color","yellow");
    }

    })
</script>
于 2012-09-13T11:21:43.070 に答える