我想要实现的是代码检查器。只有前4个数字很重要,其他数字可以是任意数字。该表单将用于用户输入产品代码。
问题在于,如果变量改为5个数字,则该变量为false。
见下面的例子:
如果用户输入数字3541,则框会改变颜色,但如果用户输入剩余数字,则该值设置为false。
另外,我试图让盒子只在插入13个数字时改变颜色,前4个数字按顺序匹配。
解决! 工作示例: http://jsfiddle.net/MZfxs/8/
答案 0 :(得分:1)
如果我理解正确,您需要进行字段值验证,并且要求的值应该从7514
或9268
等4个数字开始。在这里,您可以使用正则表达式来验证输入值,如:
// 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个数字,在第二组中检索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.
}
答案 1 :(得分:0)
每次关键事件触发时都可以断开字符串。你可以通过调用js substring()方法并取前四个字符来检查它。
答案 2 :(得分: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>