2

我想要实现的是代码检查器。只有前 4 个数字很重要,其他数字可以是任何数字。该表格将用于用户输入产品代码。

问题是,如果变量更改为 5 个数字,则该变量为假。

请参见下面的示例:

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

如果用户输入数字 3541,框会改变颜色,但如果用户输入剩余的数字,则该值设置为 false。

此外,我试图让盒子只在插入 13 个数字并且前 4 个数字按该顺序匹配时才改变颜色。

解决了!工作示例:http: //jsfiddle.net/MZfxs/8/

4

3 回答 3

1

如果我理解正确,您需要一个字段值验证,并且要求该值应该从 4 个数字开始,例如7514or 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 的长度,那么您可以将常规 epression 修改为

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

并在第一组中检索前 4 个号码,在第二组中检索 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() 方法并获取前四个字符并检查它来做到这一点。

于 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 回答