【发布时间】:2011-04-17 20:30:16
【问题描述】:
我通常只使用下拉列表执行此操作,但客户要求它是文本输入...
基本上,我想使用 Jquery 验证器来检查用户是否在文本输入框中输入了 50 个有效的美国州缩写中的 1 个。如果没有,他们会得到一个错误。我似乎找不到执行此操作的功能。非常感谢任何帮助!
【问题讨论】:
标签: jquery validation
我通常只使用下拉列表执行此操作,但客户要求它是文本输入...
基本上,我想使用 Jquery 验证器来检查用户是否在文本输入框中输入了 50 个有效的美国州缩写中的 1 个。如果没有,他们会得到一个错误。我似乎找不到执行此操作的功能。非常感谢任何帮助!
【问题讨论】:
标签: jquery validation
这是您可以添加以用于jquery validate 的验证方法
首先你声明一个验证器:
jQuery.validator.addMethod("isstate", function(value) {
var states = [
"AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "FL", "GA",
"HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD",
"MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ",
"NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "RI", "SC",
"SD", "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI", "WY",
"AS", "DC", "FM", "GU", "MH", "MP", "PR", "PW", "VI"
];
return $.inArray(value.toUpperCase(), states) != -1;
}, "Data provided is not a valid state");
然后应用验证器
$("#myform").validate()
在您的表单中,您希望将类添加到表单元素以进行检查
<input type="text" value="de" class="isstate" />
【讨论】:
jQuery.validator.addMethod("isstate", function(value.toUpperCase()) { var states = ['PA',"CA"] // of course you will need to add more return $.inArray(value,states); }, "Data provided is not a valid sate"); - 这似乎不正确。知道我做错了什么吗?
jQuery.validator.addMethod("isstate", function(value) { var states = [,"AK","AZ","AR","CA","CO","CT","DE","DC","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","MD","MA","MI","MN","MS","MO","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY" ] var in_array = $.inArray(value.toUpperCase(), states); if (in_array == -1) { return false; }else{ return true; } }, "Please enter a valid US state");
您可以使用 change() listener 来简单地根据您的有效输入字符串列表检查输入,并且仅在匹配时启用提交按钮。
无论如何。为了用户体验,最好显示所有可能状态的下拉选择器列表。至少这是我在阅读您的问题时首先想到的。
问候,
克里斯
【讨论】:
这是一个肮脏的快速解决方案:
【讨论】: