【发布时间】:2016-09-01 07:59:06
【问题描述】:
我目前正在使用jQuery Validation,我有一个包含四个输入字段的表单 - 单词、国家/地区、年龄和性别。
国家、年龄和性别验证没有任何问题,但 Word 不想验证 - 我试图让 Word 值在验证之前根据黑名单检查其自身,我试图阻止用户提交冒犯性单词。
目前,无论我在 Word 输入字段中输入什么单词,它总是显示为错误并且不想验证。
如果有人能看出我哪里出错了,我将不胜感激!
JS
/* Blacklist Array */
var blacklist = ['foo', 'bar', 'fizz', 'buzz', /* many more banned words... */ ];
/* Blacklist Validation */
jQuery.validator.addMethod("word", function(value) {
var in_array = $.inArray(value, blacklist);
if (in_array == -1) {
return false;
} else {
return true;
}
});
/* Submit Validation */
$("#submit").validate({
errorPlacement: function(error, element){},
rules: {
word: {
required: true
},
country: {
required: true
},
age: {
required: true
},
sex: {
required: true
}
},
submitHandler: function(form) {
alert('Submitted');
}
});
HTML
<form methord="post" name="wordsubmit" id="submit">
<div class="inner">
<input class="word" name="word" placeholder="Your Word" type="text"/>
<select class="country" name="country" size='1'>
<option value="">Your country</option>
</select>
<select class="age" name="age" size='1'>
<option value="">Age</option>
<option value="18-24">18-24</option>
<option value="25-34">25-34</option>
<option value="35+">35+</option>
</select>
<select class="sex" name="sex" size='1'>
<option value="">Sex</option>
<option value="Male">Male</option>
<option vlaue="Female">Female</option>
</select>
</div>
<input class="submit" name="submit" type="submit" value="Submit"/>
</form>
【问题讨论】:
-
所以正是您希望您错误添加的作品必须在文本框中输入时进行验证。不是吗?
-
你为什么在
value上toUpperCase()?blacklist中的单词都不是大写的? -
是的,所以如果用户输入了一个令人反感的词,该字段将变为无效,如果用户输入了一个无攻击性的词,该字段将变为有效并准备提交。
-
@Jamiec 输入值是大写的,所以我将数组转换为大写以便值可以匹配?
-
@Adam - 你没有 - 你将用户输入的值设置为大写,即使黑名单都是小写的。请参阅我的答案以了解更多详细信息。
标签: jquery validation jquery-validate