我正在开发一个目前无法拥有任何 3rd 方 JS 库的项目(否则使用 jQuery 会轻而易举)。这个项目中的一件事是表单验证。除了我的正则表达式的一些小问题外,我的工作相当不错。
我正在触发文本字段的验证函数 onchange(),因此,如果您退出并且出现错误,您会立即知道。使用良好的数据进行标记,您也会立即知道。如果验证失败,我将错误类分配给父元素。如果您只进行一次验证,则此方法可以正常工作。如果您一直未能通过测试,错误类会不断增加,例如,如果您未能通过 2 次验证,您最终会得到:
<p class=" error">
如果你失败了 3 次,你最终会得到:
<p class=" error error">
如果验证通过,我将调用下面的 removeClass() 函数。基本上,看起来我并没有获得全局搜索/替换。我确信添加全局修饰符可以解决上述情况,但事实并非如此,它只会删除一个“错误”类。
removeClass: function (el, name) {
var regex = new RegExp('(^|\\s)' + name + '(\\s|$)', 'gi');
el.className = el.className.replace(regex, ' ');
}
我的正则表达式只是在寻找行首或空格,然后是“错误”,然后是空格或行尾。诚然,我承认我不擅长正则表达式:)
有什么东西冲着你跳出来吗?