JQuery验证Regex规则不起作用
JQuery Validate Regex Rule Not Working
我有一个用于jQuery Validate的正则表达式规则设置。但是,一旦启用高亮显示方法,无论我在字段中键入什么,我似乎都无法启用取消高亮显示方法。
这是一个示例:
<html>
<head>
<title>test</title>
<link rel="stylesheet" href="http://eat-sleep-code.com/style/jquery-ui.min.css" />
<link rel="stylesheet" href="http://eat-sleep-code.com/style/bootstrap.min.css" />
<link rel="stylesheet" href="http://eat-sleep-code.com/style/bootstrap-theme.min.css" />
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js"></script>
<script type="text/javascript" src="http://eat-sleep-code.com/scripts/bootstrap.min.js"></script>
<script type="text/javascript" src="http://eat-sleep-code.com/scripts/jquery.validate.min.js" defer="defer"></script>
</head>
<body>
<form>
<fieldset>
<legend>
Example Form
</legend>
<ol>
<li id="ExampleInputRow">
<input type="text" id="ExampleInput" name="ExampleInput" class="form-control" maxlength="256" />
</li>
</ol>
</fieldset>
</form>
<script type="text/javascript">
$(document).ready(function () {
var lettersNumbersOnlyMinMaxCharactersRegex = '/^[a-z0-9]{8,32}$/ig';
$.validator.addMethod('lettersNumbersOnlyMinMaxCharacters', function (value, element, parameter) {
return value.match(lettersNumbersOnlyMinMaxCharactersRegex);
}, '');
$.validator.setDefaults({
errorPlacement: function(error, element){
$(error).insertBefore($(element));
},
highlight: function(element, errorClass) {
$(element).parent().removeClass('has-success').addClass('has-error');
},
unhighlight: function(element, errorClass, validClass) {
$(element).parent().removeClass('has-error').addClass('has-success');
},
invalidHandler: function(event, validator) {
setTimeout(function(){
$('input:text').blur();
$('input:password').blur();
$('textarea').blur();
}, 10);
},
onkeyup: function (element) {
$('#ExampleInput').valid();
}
});
var validator = $("form").validate({
rules: {
ExampleInput: {lettersNumbersOnlyMinMaxCharacters: true}
},
messages: {
ExampleInput: {lettersNumbersOnlyMinMaxCharacters: "You must enter between 8 and 32 numbers and letters."}
}
});
function Validate() {
return $('form').valid();
}
});
</script>
如果我键入8个字母,那么正则表达式应该匹配,并且错误消息应该被清除。但这并没有发生。我在Google Chrome开发工具中对unhighlight方法的内容设置了一个断点,但似乎从未命中。
因为您没有将正则表达式传递给匹配项,所以您正在传递字符串
var lettersNumbersOnlyMinMaxCharactersRegex = /^[a-z0-9]{8,32}$/ig;
演示:Fiddle
此外,不需要编写新的方法来使用regex验证,jQuery-validator的additional-method.js有一个名为pattern的规则,可以用于此目的
var lettersNumbersOnlyMinMaxCharactersRegex = /^[a-z0-9]{8,32}$/ig;
var validator = $("form").validate({
rules: {
ExampleInput: {
pattern: lettersNumbersOnlyMinMaxCharactersRegex
}
},
messages: {
ExampleInput: {
lettersNumbersOnlyMinMaxCharacters: "You must enter between 8 and 32 numbers and letters."
}
}
});
演示:Fiddle
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 监视函数从服务返回不起作用,但作用域函数起作用
- 幻灯片滚动javascript不起作用
- 简单的javascript在Shopify中不起作用
- Recaptcha在IE7和IE8中不起作用
- Ember Data DS.Model's set函数不起作用
- JsFiddle上的鼠标事件不起作用
- 我的AngularJS表达式没有'不起作用
- 点击按钮输入不起作用
- 面向对象的Javascript代码在IE7中不起作用
- Jquery.pwsstrength密码强度指示器规则不起作用
- jison规则的优先级不起作用
- Java 脚本的 Snort 规则不起作用
- 删除 CSS 规则在 Firefox 中不起作用
- 为什么某些 if 语句规则不起作用
- JQuery验证Regex规则不起作用
- 设置规则在jQuery Validate插件中不起作用
- 添加规则到样式表 JavaScript - insertRule不起作用
- javascript远程规则不起作用
- 添加规则后,Jquery表单验证不起作用