使用 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 + ']');
但是您的字符串存在三处错误:
- 它包含单引号,而不是双引号。不幸的是,
JSON.parse()
需要双引号。
- 缺少第一个引号。
- 末尾多了一个逗号
也就是说,您的字符串如下所示:
111111','222222','333333',
要更正所有这些问题,您可以使用:
var ID = JSON.parse('["' + document.getElementById("valIDS_out").value.slice(0,-1).replace(/\'/g, '"') + ']');
您可以将下一行缩短为:
return ($.inArray(value, ID) >= 0);
正如 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!");
我正在使用 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 + ']');
但是您的字符串存在三处错误:
- 它包含单引号,而不是双引号。不幸的是,
JSON.parse()
需要双引号。 - 缺少第一个引号。
- 末尾多了一个逗号
也就是说,您的字符串如下所示:
111111','222222','333333',
要更正所有这些问题,您可以使用:
var ID = JSON.parse('["' + document.getElementById("valIDS_out").value.slice(0,-1).replace(/\'/g, '"') + ']');
您可以将下一行缩短为:
return ($.inArray(value, ID) >= 0);
正如 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!");