jQuery: 将输入值与数组中的值进行比较

5
我将尝试检查用户在输入文本字段中输入的值。一旦他们输入了值并点击提交按钮,如果他们输入的值与数组中的某个值匹配,我将产生一个结果;如果不在数组中,则产生另一个结果。
基本上,您需要一个简单的表单,如下所示:
<form id="checkinput" action="#">
<input type="text" value="" id="couponcode" name="coupon code name"/>
<input type="button" id="submit" value="Submit"/>
</form>

当点击“#submit”时,如果“#couponcode”输入框中的值等于数组中的值,则向具有ID“success_show”的div添加“success”类,否则会显示一个简单的警告,例如“您的优惠码有误”。
我将拥有一个隐藏的div,在成功后将“success”类添加到该div。
数组将定期更改,并在不同时间具有不同的数量。 如下所示:
var arr = [ "CA238", "Pete", 8, "John" ];

出于好奇,如果您已经将其上线运行,我能否看到此网站的实时演示? - Baz1nga
我不会将这些数组保留在JS中,我会使用AJAX来检查数据库或PHP数组。 - user3915050
4个回答

12

You can use jquery...

$.inArray(value, array) // returns -1 if value doesn't exist, otherwise returns index

编辑 如果您不使用jQuery,则可以在数组上使用indexOf方法。

if(array.indexOf(value) < 0){ // doesn't exist
    // do something
}
else { // does exist
    // do something else
}

4
function include(arr, obj) {

    for(var i=0; i<arr.length; i++) {
        if (arr[i] === obj) return true;
    }
}

var arr = [ "CA238", "Pete", 8, "John" ];

$("#submit").click(function(e){
e.preventDefault();

    var val=$("#couponcode").val();
    if(include(arr, val))
        alert("success");

});

http://jsfiddle.net/kCYkx/5/

这里提供了从JavaScript数组中查找元素的最佳方法

或者可以使用inArray函数。

$("#submit").click(function(e){
e.preventDefault();

    var val=$("#couponcode").val();
    if($.inArray(arr,val))
        alert("success");

});

http://jsfiddle.net/kCYkx/6/


0

0

你的数组需要这样创建:

var a=[];
a["couponcode"]="CA238";
a["name"]="peter";

或者一个如下的JSON:

var a={ couponCode:"CA238", name: "peter"}

现在有了这个,当您想要验证表单时,可以通过所有的输入元素运行它,例如使用$.each,然后获取每个输入的ID,并从您创建的数组或JSON中获取相同的值,比较两个值并查看是否正确。

代码将如下所示:

$("input").each( function()
{

    var id=$(this).attr("id");
    if(a[id])   // for json a.hasOwnProperty(id)
    {
      if($(this).val()!==a[id])
      {
        // do the necessary
      }

}
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接