这是我的jQuery代码:
$(document).ready(function(e) {
$('#step1 #fName').focus(function() {
$('#step1 #fName').keyup(function() {
var reg = /^([A-Za-z])$/;
var check = $('#step1 #fName').val();
if (reg.test(check) == true || check.match(reg) == true) {
$('#step1 #fName').css('border',' 1px solid #CCC');
}
else {
$('#step1 #fName').css('border',' 1px solid #b20000');
}
});
});
});
我想对此HTML标记应用jQuery验证:
<input type="text" class="width-260" id="fName"/>
我该怎么做呢?提前谢谢。
答案 0 :(得分:0)
您需要使用新的RegExp()...
创建一个RegExp对象尝试:
var reg = new RegExp('^([A-Za-z])$');
答案 1 :(得分:0)
您可以使用文字RegExp创建,但是您不想在keyup
事件中分配focus
处理程序
$(document).ready(function (e) {
var keyupHandler = function () {
var self = $(this),
reg = /^([A-Za-z])$/,
check = self.val(),
matches = reg.test(check) || check.match(reg),
border = matches ? '1px solid #CCC' : '1px solid #b20000';
self.css('border', border)
};
$('#step1 #fName').keyup(keyupHandler).focus();
});
工作演示:http://jsfiddle.net/X3ZDQ/
此外,您当前的正则表达式只允许输入中的一个字符,如果这不是您想要的效果,请将正则表达式更改为/^([A-Za-z]+)$/
<强>更新强>
“在任何字母数字上”固有的问题是双重的。
首先,你的正则表达式只允许alphas,而不是数字。
其次,如果您只验证keyup
事件中的单个字符,则验证会产生误报。
一段时间的例子:
a //a is valid
an //n is valid
an1 //1 is not valid, so border changes to red
an1n //n is valid, so border changes back to grey
最终值为an1n
,这是无效的,因为它包含1
,但您的验证例程会通过它,因为输入的最后一个字符是n
,这是有效的。< / p>
最好在输入中验证整个字符串。为此,请更改正则表达式,使其在您的角色类之后包含+
量词:
/^([A-Za-z]+)$/
更新了小提琴:http://jsfiddle.net/X3ZDQ/1/