Javascript 使用JQuery检查邮政编码

Javascript 使用JQuery检查邮政编码,javascript,jquery,Javascript,Jquery,我尝试构建一个表单,检查输入的邮政编码是否与预定义数组中的邮政编码匹配。我不使用DB,它都是非常基本和硬编码的,但在这种情况下应该足够了 问题是数组中只有第一个邮政编码('83512')有效。如果我输入第二个('83533'),代码会显示“不成功” 我做错了什么 提前谢谢 HTML: <form action="javascript:alert('success.');" id="checkplz"> <label for="plz">ZIP:</label

我尝试构建一个表单,检查输入的邮政编码是否与预定义数组中的邮政编码匹配。我不使用DB,它都是非常基本和硬编码的,但在这种情况下应该足够了

问题是数组中只有第一个邮政编码('83512')有效。如果我输入第二个('83533'),代码会显示“不成功”

我做错了什么

提前谢谢

HTML:

<form action="javascript:alert('success.');" id="checkplz">
    <label for="plz">ZIP:</label>
    <input type="text" name="plz" id="plz" />
    <button id="submit" >Check!</button>
    <div id="output"></div>
</form>
$(document).ready(function(){
    var list = ['83512','83533'];
    $("#checkplz").submit(function() {
        for (var i = 0; i < list.length; i++) {
            if ($("#plz").val() == list[i]) {
                $("#output").append("<strong class='success'>success!</strong>").show();
                return true;
            }
            $("#output").text("no success!").show().fadeOut(10000);
                return false;
        }
    });
});

邮编:
检查!
JQuery:

<form action="javascript:alert('success.');" id="checkplz">
    <label for="plz">ZIP:</label>
    <input type="text" name="plz" id="plz" />
    <button id="submit" >Check!</button>
    <div id="output"></div>
</form>
$(document).ready(function(){
    var list = ['83512','83533'];
    $("#checkplz").submit(function() {
        for (var i = 0; i < list.length; i++) {
            if ($("#plz").val() == list[i]) {
                $("#output").append("<strong class='success'>success!</strong>").show();
                return true;
            }
            $("#output").text("no success!").show().fadeOut(10000);
                return false;
        }
    });
});
$(文档).ready(函数(){
变量列表=['83512','83533'];
$(“#checkplz”).submit(函数(){
对于(变量i=0;isuccess!).show();
返回true;
}
$(“#输出”).text(“没有成功!”).show().fadeOut(10000);
返回false;
}
});
});

循环中的逻辑已关闭。见下文:

$(document).ready(function(){
    var list = ['83512','83533'];
    $("#checkplz").submit(function() {
        var match = false;
        for (var i = 0; i < list.length; i++) {
            if ($("#plz").val() == list[i]) {
                         $("#output").append("<strong class='success'>success!</strong>").show();
                return true;   
            }

        }

        $("#output").text("no success!").show().fadeOut(10000);
                return false;
    });
});
$(文档).ready(函数(){
变量列表=['83512','83533'];
$(“#checkplz”).submit(函数(){
var匹配=假;
对于(变量i=0;isuccess!).show();
返回true;
}
}
$(“#输出”).text(“没有成功!”).show().fadeOut(10000);
返回false;
});
});

尝试在循环外返回false,因此只有在检查完所有值后才会发生:

$(document).ready(function(){
    var list = ['83512','83533'];
    $("#checkplz").submit(function() {
        for (var i = 0; i < list.length; i++) {
            if ($("#plz").val() == list[i]) {
                $("#output").append("<strong class='success'>success!</strong>").show();
                return true;
            }
        }
        $("#output").text("no success!").show().fadeOut(10000);
        return false;
    });
});
$(文档).ready(函数(){
变量列表=['83512','83533'];
$(“#checkplz”).submit(函数(){
对于(变量i=0;isuccess!).show();
返回true;
}
}
$(“#输出”).text(“没有成功!”).show().fadeOut(10000);
返回false;
});
});
使用jQuery.inArray()


这里的文档:

问题在循环的逻辑中。循环将只运行一次,因为循环总是在第一次迭代后返回(如果它在列表数组中找到第一个元素,则为true,对于其他所有元素,则为false),而不是在所有迭代中继续。因此,第二个元素的情况是循环正在运行,确定第一个元素没有找到,并返回false,甚至从未处理第二个元素

更好的方法是循环列表数组,直到找到匹配的元素,并跟踪是否找到匹配项。这将确保在处理完数组的所有元素(或找到匹配项,在这种情况下,我们可以停止循环以在处理时保存)之前不会退出循环

请参阅下面()中的一些示例代码,其中包含一些关于正在发生的事情的注释

$(document).ready(function(){
    var list = ['83512','83533'];
    $("#checkplz").submit(function() {
        var matched = false; // Set up variable to track if we find a match
        $(list).each(function() {
            // Inside the jQuery 'each' method, 'this' equals the current item in the iteration.
            if(this == $("#plz").val()) {
                matched = true; // set the 'matched' variable to true
                $("#output").append("<strong class='success'>success!</strong>").show();
                return; // Since we found a match, we can stop processing the array
            }
        });
        // Outside of the loop, only display no success if we didn't find any matches.
        if (!matched) {
            $("#output").text("no success!").show().fadeOut(10000);
        }

    });
});
$(文档).ready(函数(){
变量列表=['83512','83533'];
$(“#checkplz”).submit(函数(){
var matched=false;//设置变量以跟踪是否找到匹配项
$(列表)。每个(函数(){
//在jQuery“each”方法中,“this”等于迭代中的当前项。
if(this==$(“#plz”).val()){
matched=true;//将“matched”变量设置为true
$(“#输出”).append(success!).show();
return;//由于找到了匹配项,因此可以停止处理数组
}
});
//在循环之外,如果没有找到任何匹配项,则仅显示“无成功”。
如果(!匹配){
$(“#输出”).text(“没有成功!”).show().fadeOut(10000);
}
});
});