使用 jQuery 验证插件检查由 Google 可视化 api 查询调用的数组

Using jQuery validation plugin to check an array called by a Google visualization api query

我正在使用 jQuery 验证插件在学生登录 class 时检查他们的 ID。使用以下代码对数组进行验证工作正常。

jQuery.validator.addMethod("studentID", function(value) {
 var ID = ['109289','109351'] /* Just a few Ids, but this works fine. */
 var in_array = $.inArray(value, ID);
 if (in_array == -1) {
    return false;
}else{
    return true;
    }}, "SORRY, NOT A VALID ID!"); $("#validID").validate({ success: function() { 
alert("It works!");} });

我感兴趣的是在每次加载页面时使用 google 可视化 api 查询对调用输入字段的数组进行验证。我很难弄清楚如何更改验证脚本以查看输入字段的 ID 数组。这可能吗?

这是完整的 demo

这是我(失败)尝试的验证码:

jQuery.validator.addMethod("studentID", function(value) {
var ID = document.getElementById("valIDS_out").value; /* Doesn't work??? */
var in_array = $.inArray(value, ID);
if (in_array == -1) {
    return false;
}else{
    return true;

}}, "SORRY, NOT A VALID ID!");

$("#validID").validate({ success: function() { 
alert("It works!");} });

感谢您提供的任何帮助。我对此很陌生。

问题是您的 ID 变量是字符串,而不是数组。在调用 $.inArray().

之前,您需要将其转换为数组

如果字符串的格式如下:

"111111",222222","333333"

您可以使用 JSON.parse() 函数轻松地将其转换为数组:

var ID = JSON.parse('[' + document.getElementById("valIDS_out").value + ']');

但是您的字符串存在三处错误:

  1. 它包含单引号,而不是双引号。不幸的是,JSON.parse() 需要双引号。
  2. 缺少第一个引号。
  3. 末尾多了一个逗号

也就是说,您的字符串如下所示:

111111','222222','333333',

要更正所有这些问题,您可以使用:

var ID = JSON.parse('["' + document.getElementById("valIDS_out").value.slice(0,-1).replace(/\'/g, '"') + ']');

您可以将下一行缩短为:

return ($.inArray(value, ID) >= 0);

jsfiddle

正如 John S 所说,ID 不是一个数组,它只是一个字符串,它是无效的 JSON 可以被解析。

适用于给定字符串的可能解决方案:

jQuery.validator.addMethod("studentID", function(value) {

  var ID = document.getElementById("valIDS_out").value;  

  return ((!isNaN(value) && ID.match(new RegExp('\b'+value+'\b'))));
}, "SORRY, NOT A VALID ID!"); 

http://codepen.io/anon/pen/RWPwdo